目的
tWAS 9.0 と MQ 9.2 環境を構築してJMSをテストします。
Gitレポジトリ
用意したGitレポジトリをクローンします。
git clone https://github.com/pdprof/jms
cd jms/jms-docker/
MQイメージのビルド, tWASイメージのビルド
MQ, tWASのイメージをビルドします。localhost 以外の docker を動かしているホストのIPアドレスをACCESS_HOSTに指定します。Libertyの環境を流用しているのでLibertyもビルドされます。
export ACCESS_HOST=127.17.0.1
# export ACCESS_HOST=`hostname` # hostnameコマンドで返す値でアクセスできる場合
./setup-docker.sh
./setup-was90.sh
MQの起動
MQ以外にも docker images の用意はありますが、ここではMQを起動します。
./mq-start.sh
tWASは、MQ用にしか構成していないので、SIBusやActiveMQとは動作できません。
MQにアクセスするtWASの起動
JMSアプリケーションを実行するtWASを起動します。
./was90-start.sh
アプリケーションにアクセスして動作確認
http://localhost:9080/jms/
にアクセスすると以下画面が確認できます。localhost部分はACCESS_HOSTに指定したものと置き換えます。
Action, Queue, Message を指定してメッセージの送受信をします。
Q3はMDBが動作しているので、receiveAllの必要はありません。MDBが動いたタイミングでlibertyのログに受信したメッセージが出力されています。
[4/24/23 6:31:21:070 UTC] 0000008c SystemOut O > PdprofJMSServlet.send
[4/24/23 6:31:21:103 UTC] 0000008c SystemOut O = PdprofJMSServlet.send to queue:Q3
[4/24/23 6:31:21:107 UTC] 0000008c SystemOut O < PdprofJMSServlet.send
[4/24/23 6:31:21:210 UTC] 0000008d SystemOut O PdprofMdb.onMessage() - Message Received :
JMSMessage class: jms_text
JMSType: null
JMSDeliveryMode: 2
JMSDeliveryDelay: 0
JMSDeliveryTime: 0
JMSExpiration: 0
JMSPriority: 4
JMSMessageID: ID:414d5120514d31202020202020202020ce1c4664022b0040
JMSTimestamp: 1682317881097
JMSCorrelationID: null
JMSDestination: queue://QM1/DEV.QUEUE.3
JMSReplyTo: null
JMSRedelivered: false
JMSXAppID: bootstrap.WSPreLauncher
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: 20230424
JMS_IBM_PutTime: 06312109
test test test
まとめ
JMSの環境を構築して、テストをすることができました。これまでのテスト環境構築手順とあまり変わり映えしませんが、それだけ手軽に環境が構築できるのだと思ってもらえるとありがたいです。