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版)
4. 応用編 APMツール(Instana)によるMQとLibertyの監視
さらに詳しい情報をお探しの方へ
IBMの最新情報、イベント情報、さらに役立つ資料は、以下のIBM Communityでも発信・格納されています。
最新のトレンドや有益な情報をチェックするために、ぜひご覧ください!
- WebSphere: IBM Community - WebSphere
WebSphere関連の最新情報やディスカッション、イベント情報、技術資料を公開中!
- ELM (Engineering Lifecycle Management): IBM Community - ELM
ELMに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!
- Integration: IBM Community - Integration
Integrationに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!










































