MQ入門の入り口になるようなコンテンツを目指して。 簡単にデモ環境つくって、メッセージキューを体験してみます。
メッセージキューアプリケーションです。 いわゆるシステム間連携で使用するもので、オンブレとクラウドとの間のデータ連携や システムとシステムとのつなぐ仲立ちをするものになります。 いまや世の中にある様々なシステムの裏側で活躍する縁の下の力持ちです。
そんなメッセージキューを体感するためローカルにコンテナ環境を作り。 以下システム構成でメッセージのやりとりをしてみました。今回はcURLコマンドを使用して REST APIで「Hello MQ!!」というメッセージを送受信してみます。
- Windows11 Pro
- Docker for Business
- Docker(またはpodman)
$ docker volume create qm1v
$ docker run -d --name mymq -v qm1v:/mnt/mqm -e LICENSE=accept -e MQ_QMGR_NAME=QM1 -p 9443:9443 icr.io/ibm-messaging/mq:9.3.2.0-r2
# CONTAINER IDを確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaed19cf19a4 icr.io/ibm-messaging/mq:9.3.2.0-r2 "" 2 days ago Up 3 seconds 1414/tcp, 9443/tcp mymq
※上記コマンドから「eaed19cf19a4」とわかる
# コンテナIDを指定して実行
$ docker exec -it eaed19cf19a4 dspmq
QMNAME(QM1) STATUS(Running)
# PC側で実行
$ docker exec -it eaed19cf19a4 /bin/bash
# コンテナ内で実行
$ dspmqweb status
MQWB1124I: Server 'mqweb' is running.
URLS:
https://eaed19cf19a4:9443/ibmmq/console/
https://eaed19cf19a4:9443/ibmmq/rest/
※上記で「https://eaed19cf19a4:9443」となっているが コンテナで実行しているため「https://localhost:9443」となる。
https://localhost:9443/ibmmq/console/ (admin/passw0rdでログイン) ※警告が出るが無視してログイン
赤枠のDEV.QUEUE.1をクリック ※このあとのメッセージ送受信で使用するキューです。
# app/passw0rdでログイン。ローカルPC側のCookieに認証情報を保存する
$ curl -k https://localhost:9443/ibmmq/rest/v2/login -X POST -H "Content-Type: application/json; charset=UTF-8" -d "{\"username\":\"app\",\"password\":\"passw0rd\"}" -c c:\users\hogehoge\cookiejar.txt
# 送信
$ curl -k https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/DEV.QUEUE.1/message -X POST -b c:\users\hogehoge\cookiejar.txt -H "ibm-mq-rest-csrf-token: value" -H "Content-Type: text/plain;charset=utf-8" --data "Hello MQ!!"
WebConsoleで送信したメッセージを格納しているか確認
# 受信(メッセージ受信しつつ、キューからメッセージを消す)
$ curl -k https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/DEV.QUEUE.1/message -X DELETE -b c:\users\hogehoge\cookiejar.txt -H "ibm-mq-rest-csrf-token: value" -H "Content-Type: text/plain;charset=utf-8"
Hello MQ!!
コンソールに「Hello MQ!!」となればOK。メッセージ受信できています。
WebConsoleで、受信したメッセージが消えているか確認
ということで、ここまでMQコンテナを使って、メッセージキューを体験してみましたがいかがでしたか? 今回はコマンドでメッセージの送受信をしたので、ものすごくシンプルであっさりした見た目になりましたが・・・ でもメッセージキューはシステムにおける重要なファクターであることを忘れないであげてください。。。 次回はローカルコンテナではなく、クラウド上で同じことをやってみたいと思います。お楽しみに。
https://github.com/ibm-messaging/mq-container/blob/master/docs/usage.md
https://www.ibm.com/docs/ja/ibm-mq/9.2?topic=security-using-token-based-authentication-rest-api
https://www.ibm.com/docs/ja/ibm-mq/9.2?topic=resources-messagingqmgrqmgrnamequeuequeuenamemessage