はじめに
MQ30周年おめでとうございます!
ということで(?)MQ入門の入り口になるようなコンテンツを目指して。。。
簡単にデモ環境つくって、メッセージキューイングを体験してみます。
MQとは
メッセージキューイングアプリケーションです。
いわゆるシステム間連携で使用するもので、オンブレとクラウドとの間のデータ連携や
システムとシステムとのつなぐ仲立ちをするものになります。
いまや世の中にある様々なシステムの裏側で活躍する縁の下の力持ちです。
やりたいこと
そんなメッセージキューイングを体感するためローカルにコンテナ環境を作り。
以下システム構成でメッセージのやりとりをしてみました。今回はcURLコマンドを使用して
REST APIで「Hello MQ!!」というメッセージを送受信してみます。
私の環境
- Windows11 Pro
- Docker for Business
事前準備
- Docker(またはpodman)
構築
永続ボリュームを作って、MQコンテナ起動
C:\Users\hogehoge>docker volume create qm1v
C:\Users\hogehoge>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
コンテナIDを確認して、動作確認
# CONTAINER IDを確認
C:\Users\hogehoge>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を指定して実行
C:\Users\hogehoge>docker exec -it eaed19cf19a4 dspmq
QMNAME(QM1) STATUS(Running)
REST APIのエンドポイントを確認
# PC側で実行
C:\Users\hogehoge>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」となる。
ブラウザでMQ Web Consoleの動作確認
https://localhost:9443/ibmmq/console/
(admin/passw0rdでログイン)
※警告が出るが無視してログイン
RESTAPI実行のために事前認証(トークン認証)
# app/passw0rdでログイン。ローカルPC側のCookieに認証情報を保存する
C:\Users\hogehoge>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
メッセージ送受信
# 送信
C:\Users\hogehoge>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!!"
# 受信
C:\Users\hogehoge>curl -k https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/DEV.QUEUE.1/message -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。メッセージ受信できています。
最後に
ということで、ここまでMQコンテナを使って、メッセージキューを体験してみましたがいかがでしたか?
今回はコマンドでメッセージの送受信をしたので、ものすごくシンプルであっさりした見た目になりましたが・・・
でもメッセージキューはシステムにおける重要なファクターであることを忘れないであげてください。。。
次回はローカルコンテナではなく、クラウド上で同じことをやってみたいと思います。お楽しみに。
参考資料
MQコンテナ使用方法
認証
MQ REST APIドキュメント