目的
JMS環境を構築してJMSをテストします。
Gitレポジトリ
用意したGitレポジトリをクローンします。
git clone https://github.com/pdprof/jms
cd jms/jms-docker/
Libertyイメージのビルド
Liberty Docker イメージをビルドします。localhost 以外の docker を動かしているホストのIPアドレスをACCESS_HOSTに指定します。
export ACCESS_HOST=127.17.0.1
# export ACCESS_HOST=`hostname`
./setup-docker.sh
MQの起動
MQ以外にも docker images の用意はありますが、ここではMQを起動します。
./mq-start.sh
Libertyを SIBusとして使用するときは ./jms-sib-start.sh を実行します。
ActiveMQを使用するときは ./amq-start.sh を実行します。
MQにアクセスするLibertyの起動
JMSアプリケーションを実行するLibertyを起動します。
./jms-mq-start.sh
SIBusのクライアントは ./jms-sib-client-start.sh で起動します。
ActiveMQのクライアントは ./jms-amq-start.sh で起動します。
アプリケーションにアクセスして動作確認
http://localhost:9080/jms/
にアクセスすると以下画面が確認できます。localhost部分はACCESS_HOSTに指定したものと置き換えます。
Action, Queue, Message を指定してメッセージの送受信をします。
Q3はMDBが動作しているので、receiveAllの必要はありません。MDBが動いたタイミングでlibertyのログに受信したメッセージが出力されています。
docker logs jms-mq
> PdprofJMSServlet.send
= PdprofJMSServlet.send to queue:Q3
< PdprofJMSServlet.send
PdprofMdb.onMessage() - Message Received :
JMSMessage class: jms_text
JMSType: null
JMSDeliveryMode: 2
JMSDeliveryDelay: 0
JMSDeliveryTime: 0
JMSExpiration: 0
JMSPriority: 4
JMSMessageID: ID:414d5120514d31202020202020202020463f2164012c0040
JMSTimestamp: 1679900861743
JMSCorrelationID: null
JMSDestination: queue://QM1/DEV.QUEUE.3
JMSReplyTo: null
JMSRedelivered: false
JMSXAppID: jar
JMSXDeliveryCount: 1
JMSXUserID: app
JMS_IBM_Character_Set: UTF-8
JMS_IBM_Encoding: 273
JMS_IBM_Format: MQSTR
JMS_IBM_MsgType: 8
JMS_IBM_PutApplType: 28
JMS_IBM_PutDate: 20230327
JMS_IBM_PutTime: 07074175
test
まとめ
JMSの環境を構築して、テストをすることができました。