読者です 読者をやめる 読者になる 読者になる

s2buri-exampleとs2jms-activemq-blank-serverを使ったデモ

 id:koichikさんが作成したs2jms-activemq-blank-serverを使って、作成中のS2JMS用デモを書き換えたところ、はまっていた問題が解決し、s2buri-exampleとの連携に成功しました!

 やっていることは、PaymentActionImplをS2JMSによってイベントを受信して処理を行うPaymentActionJmsImplを作成し、S2JMS.Containerから呼び出させています。

 また、別プロセス(JVM)で動作するため、derbyをサーバモードで起動し、bao以降の処理はそのままs2buri-exampleの実装に任せています。

PaymentActionJmsImpl

public class PaymentActionJmsImpl implements PaymentAction {
    private GasRateBao gasRateBao;
    
    @JMSPayload
    private String billCode;
    @JMSPayload
    private int paymentAmount;

    @OnMessage
    public String pay() {
        ・・・略・・・
        (PaymentActionImplのまま)
    }

    public void setBillCode(String billCode) {
        this.billCode = billCode;
    }

    public void setGasRateBao(GasRateBao gasRateBao) {
        this.gasRateBao = gasRateBao;
    }

    public void setPaymentAmount(int paymentAmount) {
        this.paymentAmount = paymentAmount;
    }
}

PaymentActionJmsImplTest

public class PaymentActionJmsImplTest extends S2JMSTestCase {

    protected PaymentActionJmsImpl testAction;

    protected TransactionManager tm;
    protected MessageSender sender;
    
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        include("PaymentActionImplTest.dicon");
    }
    
    public void test() throws Exception {
        tm.begin();
        try {
            
            Map<String, Object> msg = new HashMap<String, Object>();
            msg.put("billCode", "1144");
            msg.put("paymentAmount", 3000);
            
            sender.send(msg);
        } finally {
            tm.commit();
        }
        
        assertTrue(true);
    }
}