7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

いまからでも遅くない!メッセージキュー超入門 ~REST APIでメッセージやりとりしてみた!~

Last updated at Posted at 2023-05-14

はじめに

MQ30周年おめでとうございます!
ということで(?)MQ入門の入り口になるようなコンテンツを目指して。。。
簡単にデモ環境つくって、メッセージキューイングを体験してみます。

MQとは

メッセージキューイングアプリケーションです。
いわゆるシステム間連携で使用するもので、オンブレとクラウドとの間のデータ連携や
システムとシステムとのつなぐ仲立ちをするものになります。
いまや世の中にある様々なシステムの裏側で活躍する縁の下の力持ちです。

やりたいこと

そんなメッセージキューイングを体感するためローカルにコンテナ環境を作り。
以下システム構成でメッセージのやりとりをしてみました。今回はcURLコマンドを使用して
REST APIで「Hello MQ!!」というメッセージを送受信してみます。

※以下図における「アプリ」はcURLコマンドを指します。
MQシステム構成.jpg

私の環境

  • 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ドキュメント

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?