1. この記事について
この記事は、IBM MQに関するハンズオン資料シリーズの一部です。
まだ「はじめに」の記事をご覧になっていない方は、まずそちらからご確認ください。
初級編には、GUI版とCLI版の2つのバージョンがあります。
インターフェースは異なりますが、実施する内容はどちらも同じです。
- GUI版:Webコンソールを使用(本記事)
- CLI版:Webコンソールを使用せず、コマンドで操作
どちらを選んでも問題ありませんが、MQを初めて触る方には、現在の状況を把握しやすいGUI版(本記事)をおすすめします。
CLI版で操作を行いたい方は、以下の記事を参照してください。
2. 初級編 MQの基本操作(CLI版)
この章の位置付け
この章では、MQコンソールを使用してブラウザ上からMQを動かします。
- このハンズオンによってできるようになること
- IBM MQの基本的な操作を理解する
- キューマネージャーの作成と管理
- ローカルキューとリモートキューの作成
- メッセージの送受信
- このハンズオンの目的
- IBM MQの基本的な操作を実際に体験し、理解を深める
- 対象者の前提条件
- IBM MQの基礎を知っていること
前提となる環境
本資料では、以下の内容を前提の環境としています。
本資料の環境 | バージョン |
---|---|
git | version 2.46.0 |
podman | version 5.3.1 (homebrew) |
make (Apple Silicon (Arm64)のmacユーザーの場合) | version 4.4.1 (homebrew) |
2. ハンズオンの全体像
このハンズオンでは、以下の2つの基本的な操作について学習します:
ローカルキューへのメッセージ送信
QM1にあるローカルキューに対してメッセージを送信し、次に送信した内容を確認します。
ローカルキューへのメッセージ送信では、以下のコンポーネントを使用します:
-
キューマネージャー(
QM1
):メッセージキューを管理するシステム -
ローカルキュー(
DEV.QUEUE.1
):同一キューマネージャー内でメッセージを格納する領域
リモートキューへのメッセージ送信
QM1にあるリモートキューに対してメッセージを送信し、QM2にあるローカルキューに伝送されたメッセージを確認します。
リモートキューへのメッセージ送信では、以下のコンポーネントを設定・使用します:
-
キューマネージャー(
QM1
,QM2
):QM1が送信側、QM2が受信側 -
カスタムネットワーク(
mq-network
):キューマネージャー間の通信経路 -
リモートキュー定義(
REMOTE.Q.1
):QM1上に定義された、QM2上のローカルキューを参照する定義 -
トランスミッションキュー(
TRANS.Q.1
):QM1からQM2へメッセージを転送するための一時保管場所 -
ローカルキュー(
DEV.QUEUE.2
):QM2上の実際のメッセージ格納先 -
チャネル(
QM1toQM2
):QM1とQM2間のメッセージ転送経路
3. インストールイメージの取得
まずはインストールイメージを取得します。
以下のガイドを参考にして、手順を実行していきます。
https://developer.ibm.com/tutorials/mq-connect-app-queue-manager-containers/
Apple Silicon (Arm64)のmacユーザーの場合:
m1以降のmacユーザーの場合は、こちらのガイドに従ってインストールイメージを取得します。
MQ Container GitHubリポジトリで公開されているイメージをgit cloneによって取得します。
git clone https://github.com/ibm-messaging/mq-container.git
取得したファイルに移動します。
cd mq-container
Makefileを使用してMQインストールイメージをプルダウンし、コンテナーイメージを構築します。
make build-devserver
Windowsユーザーの場合:
podmanを使用してイメージの取得を行います。
podman pull icr.io/ibm-messaging/mq:latest
4. キューマネージャーの作成
このセクションではpodmanのコマンドを使用してキューマネージャーを作成します。
カスタムネットワークの作成
まずは、コンテナ間でメッセージのやり取りを行うために、カスタムネットワークを作成します。
今回は、mq-network
という名前で作成します。
podman network create mq-network
イメージ名の確認
以下のコマンドを実行して、1つ前のセクションで取得したmqのイメージ名を確認します。
podman images
表示されているIMAGE IDをメモしてください。
例:以下の場合、3145ec5524f8
がIMAGE IDです。(Windowsの場合、REPOSITORYはicr.io/ibm-messaging/mq
と表示されます。)
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/ibm-mqadvanced-server-dev 9.4.2.0-arm64 3145ec5524f8 11 minutes ago 852 MB
QM1の作成
コピーしたIMAGE IDを使用して、キューマネージャーを作成します。
まずはQM1を作成します。
podman run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --volume qm1data:/mnt/mqm --publish 1414:1414 --publish 9443:9443 --detach --env MQ_APP_USER=app --env MQ_APP_PASSWORD=passw0rd --env MQ_ADMIN_USER=admin --env MQ_ADMIN_PASSWORD=passw0rd --name QM1 --network mq-network <your-image-id>
この際、今回のハンズオンで使用するDEV.QUEUE.1
はデフォルトで作成されます。
QM2の作成
次に、QM2を作成します。
podman run --env LICENSE=accept --env MQ_QMGR_NAME=QM2 --volume qm2data:/mnt/mqm --publish 1415:1414 --publish 9444:9443 --detach --env MQ_APP_USER=app --env MQ_APP_PASSWORD=passw0rd --env MQ_ADMIN_USER=admin --env MQ_ADMIN_PASSWORD=passw0rd --name QM2 --network mq-network <your-image-id>
この際、今回のハンズオンで使用するDEV.QUEUE.2
はデフォルトで作成されます。
以下のコマンドで現在実行中のコンテナを確認します。
podman ps
以下のように、QM1とQM2が無事に作成されていることを確認してください。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3e1089b0fc7b localhost/ibm-mqadvanced-server-dev:9.4.2.0-arm64 31 seconds ago Up 31 seconds 0.0.0.0:1414->1414/tcp, 0.0.0.0:9443->9443/tcp, 9157/tcp, 9415/tcp QM1
8273a595f54d localhost/ibm-mqadvanced-server-dev:9.4.2.0-arm64 5 seconds ago Up 5 seconds 0.0.0.0:1415->1414/tcp, 0.0.0.0:9444->9443/tcp, 9157/tcp, 9415/tcp QM2
webコンソールにアクセス
webブラウザで以下のURLを開いてください。
https://localhost:9443/ibmmq/console
「localhost にアクセスする(安全ではありません)」をクリックします。
ログイン画面が開くので、ユーザー名とパスワードに以下の値を入力してください。
ユーザーネーム:admin
QM1にアクセスできました。画面に「QM1の管理」と書かれているのを確認してください。
次に、ブラウザで新しいタブを開いて以下のリンクを開いてください。
https://localhost:9444/ibmmq/console
上記と同様の手順を実行し、QM2にアクセスします。
5. 練習: MQの基本操作
このセクションでは、練習としてキューの作成と削除、メッセージの送信を行います。
キューの作成と削除
キュー名をDEV.QUEUE.4に設定します。
「カスタム作成」をクリックすると細かい設定を行うことも可能ですが、今回はデフォルト設定のまま作成をクリックします。
DEV.QUEUE.4
が新しいキューとして追加されているのが確認できます。
次に、キューを削除する方法を確認してみましょう。
キューの一覧からDEV.QUEUE.4
が消えているのを確認します。
キューにメッセージを投げる
次に、キューの中にメッセージを送信してみましょう。
QM1のキュータブの画面から、DEV.QUEUE.1
をクリックします。
アプリケーション・データにtest1など適当なメッセージを入力して作成をクリックします。
次に、追加したメッセージを消去してみましょう。
右側のゴミ箱アイコンをクリックします。
6. QM1とQM2を接続する
このセクションではリモートキューとトランスミッションキュー、QM1とQM2を繋ぐチャネルを作成します。
QM1でリモートキュー作成
QM1でリモートキューを作成していきます。
画面左上から「キュー」をクリックし、QM1キューの管理画面に戻ります。
キュー名をREMOTE.Q.1
、リモート・キューにDEV.QUEUE.2
を指定します。
リモート・キュー・マネージャーにQM2
、伝送キュー(トランスミッションキュー)としてTRANS.Q.1
を指定します(ただし、これはまだ作成されていません)。
トランスミッションキューの作成
次に、トランスミッションキューを作成します。
キュー名にTRANS.Q.1
を入力し、カスタム作成をクリックします。
「一般」という項目の中にある「使用法」を「伝送」に変更します。
これにより、このキューがトランスミッションキューとして設定されます。
QM1で送信側チャネルの作成
次に、QM1とQM2を繋ぐチャネルを作成します。
左のメニューからキュー・マネージャー・チャネルを選択して、作成をクリックします。
この画面ではチャネル・タイプを作成します。
今回はQM1がメッセージを送信する側なので、送信側チャネルを選択して次へをクリックします。
チャネル名をQM1toQM2
にします。
接続名の欄には、ターゲットとなるQM2のホスト名とポート番号を入力します。
今回は1414ポートにあるQM2にメッセージを送信したいので、QM2(1414)
と入力します。
伝送キュー名にTRANS.Q.1
を入力します。これにより、TRANS.Q.1からメッセージを取得したメッセージがQM2へと送信されます。
QM2で受信側チャネルの作成
次に、QM2側で受信チャネルを作成していきます。
まずはQM1と別のタブで開いていたQM2のホーム画面を開き、QM2の管理をクリックします。
MQネットワークタブをクリックし、左のメニューからキュー・マネージャー・チャネルを選択し、作成をクリックします。
チャネル名にQM1toQM2
と入力し、作成をクリックします。
QM2でセキュリティの設定
次に、チャネルのセキュリティに関する設定を行なっていきます。
構成の表示をクリックします。
セキュリティータブからチャネル認証をクリックし、作成をクリックします。
ルールタイプとして「許可」をクリックし、「アドレス」を選択し、次へをクリックします。
チャネル名にQM1toQM2
、アドレスには*
(どこからくるアドレスも許可する)と入力します。
今回はデモのため全てのアドレスを許可していますが、実際の業務では厳密にセキュリティを設定する必要があります。
7. QM1からQM2へメッセージを送信する
それでは、作成したチャネルを使用してQM1からQM2へメッセージを飛ばしてみましょう。
REMOTE.Q.1
の3点リーダーをクリックしてメッセージの作成を選択します。
アプリケーション・データにtest1など適当なメッセージを入力して作成をクリックします。
それでは、QM2にメッセージが送信されているか確認してみましょう。
キュータブをクリックし、メッセージの送信先として設定したDEV.QUEUE.2
をクリックします。
しかし、「現在、表示するメッセージはありません」と表示されています。
どうやら、設定がうまくいっておらず、QM1からQM2へとメッセージを送信するのに失敗したようです。
それでは、送信に失敗したメッセージがどこに保管されているのかを確認しましょう。
QM1のタブを再度開き、トランスミッションキューであるTRANS.Q.1
をクリックします。
トランスミッションキューに、先ほど送信に失敗したメッセージが溜まっているのを確認します。
それでは、設定を修正しましょう。
MQネットワーク→キュー・マネージャー・チャネルをクリックします。
状況が実行中になったことを確認します。
先ほどまでQM1からQM2にメッセージの送信ができなかったのは、チャネルが実行されていなかったのが原因でした。
それでは再度メッセージを送信してみましょう。
再度、キュータブをクリックし、REMOTE.Q.1
の3点リーダーをクリックしてメッセージの作成を選択します。
アプリケーション・データにtest2など適当なメッセージを入力して、作成をクリックします。
QM2の画面に移動します。DEV.QUEUE.2
の画面で、リロードボタンをクリックします。
QM1からQM2へメッセージが送信されたことが確認できます。
8. コンテナの削除
今回作成したコンテナは次の中級編でも継続して使用します。
ハンズオンをやり直す場合やここで終了する場合など、今回作成したコンテナを削除したい場合は、以下の手順を実行してください。
コンテナIDの確認
podman ps
コンテナの停止
podman stop <container id>
コンテナの消去
podman rm <container id>
イメージの確認
podman images
イメージの消去
podman rmi <image id>
マウントされているボリュームの確認
podman volume ls
マウントされているボリュームの消去
podman volume rm <volume name>
カスタムネットワークの確認
podman network rm
カスタムネットワークの消去
podman network rm mq-network
9. ハンズオン資料リンク
2. 初級編 MQの基本操作(GUI版)
さらに詳しい情報をお探しの方へ
IBMの最新情報、イベント情報、さらに役立つ資料は、以下のIBM Communityでも発信・格納されています。
最新のトレンドや有益な情報をチェックするために、ぜひご覧ください!
- WebSphere: IBM Community - WebSphere
WebSphere関連の最新情報やディスカッション、イベント情報、技術資料を公開中!
- ELM (Engineering Lifecycle Management): IBM Community - ELM
ELMに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!
- Integration: IBM Community - Integration
Integrationに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!