Skip to content

Que Managerの作成と設定

IBM MQがどのように機能するかを確認するために、キュー・マネージャー(サーバー)の作成と構成を案内します。その後、アプリケーション(クライアント)を接続します。

このチュートリアルを終了すると、キューにメッセージを送信したり、キューからメッセージを取得することができるようになります。

IBM MQ キュー・マネージャー(サーバー)は、さまざまな方法でダウンロード、インストール、および実行することができます。

MacOSの場合は、MQ on Containersをご利用ください。

学習目標

このチュートリアルを終了すると、以下の概念を理解することができます。

  • IBM MQ キュー・マネージャー
  • IBM MQ キュー
  • ポイント・ツー・ポイント・メッセージング

前提条件

  • Docker Community Edition、バージョン17.06以降
  • Docker HubからのIBM MQ Dockerイメージ

見積もり時間

このチュートリアルの所要時間は約30分です。

ステップ

  1. Dockerのインストール 2.MQのDockerイメージの取得 3.イメージからコンテナを実行

MQをコンテナにインストールする方法をビデオで見たい方は、こちらをご覧ください。

Step 1.Dockerのインストール

すでにDockerをシステムにインストールしている場合は、どのバージョンがインストールされているかを確認します。 Docker のバージョンが dockerdocker-engine と呼ばれている場合は、これらをアンインストールしてから、最新の docker-ce をインストールしてください。

  1. Docker Hubから、Docker Community Edition(バージョン17.06以降)をダウンロードします。

2.installation documentationの指示に従って、Dockerをインストールします。

ステップ2.MQをDockerイメージで取得する

コンテナはイメージから実行され、イメージはDockerfileに記載された仕様から構築されます。ここでは、イメージを構築しなくても、コンテナを実行するだけで済むように、Docker Hubから事前に構築されたIBM MQサーバー・イメージを使用します。 最終的には、MQのインストールと、開発者が作業するためのオブジェクトが事前に設定されたキュー・マネージャーが完成します。

  1. Docker HubからMQサーバの最新バージョンを含むイメージを取り出します。

2.完了したら、どのイメージを持っているか確認します。

このような出力が表示されるはずです。

最新バージョンのMQサーバーを表示するdockerコマンドの出力

ステップ3.イメージからコンテナを実行する

MQサーバーのイメージがローカルのDockerリポジトリに入ったので、コンテナを実行してRHELのMQをコンテナで立ち上げます。

コンテナを立ち上げる際には、コンテナが削除されると削除されるメモリ内ファイルシステムが使用されます。キューマネージャーとキューのデータはこのファイルシステムに保存されます。キュー・マネージャーとキューのデータを失わないために、Dockerボリュームを使用することができます。

ボリュームは、コンテナの実行時にコンテナに添付され、コンテナが削除された後も持続します。新しいコンテナを実行するときに、既存のボリュームをアタッチして、後でキュー・マネージャーとキュー・データを再利用することができます。

  1. Dockerを使用してボリュームを作成します。

2.MQサーバーコンテナを実行します。*このコマンドを編集して、アプリケーションに接続するための独自のパスワードを設定してください。* このパスワードは、後にクライアントのデモアプリケーションと独自のクライアントアプリケーションを実行する際に必要になります。この例では、パスワードを「passw0rd」に設定していますが、任意のパスワードを設定することもできます。

キュー・マネージャーには、最初のクライアント・アプリケーションを接続するための簡単なデフォルト設定がなされています。

例えば、IBM MQ Advanced for developers のライセンスを受け入れることや、キューを常駐させるキューマネージャーの名前を "QM1" とすることなど、パラメータを docker run コマンドに追加しています。

MQ はコンテナ内で実行されているため、他の世界から隔離されていることになるので、MQ が使用するいくつかのポートを開きました。

キューマネージャーのリスナーは、ポート 1414 で着信接続を待ち、ポート 9443 は MQ コンソールが使用します。

MQデモのクライアントアプリケーションは、リスナーポートを使用し、MQコンソールのダッシュボードは、ポート9443でブラウザで見ることができます。

コンテナが起動するのを待ってから、起動していることを確認します。

このような出力が表示されるはずです。

コンテナイメージの実行による出力

おめでとうございます。あなたは、最初のシンプルなキュー・マネージャーを作成しました。これは QM1 と呼ばれ、コンテナの中で実行されています。

このキュー・マネージャーにアクセスするためには、TCP/IP で接続することになり、そのためにポート 1414 を公開する必要があります。

自分のコンテナIDをメモしておいて、それを使ってコンテナ内のコマンドラインにアクセスします。例えば、以下のようになります。

このような出力が表示されるはずです。

コンテナ内でCLIアクセスを得るための出力

コマンドラインインターフェイスでdspmqverコマンド(MQのバージョンを表示)を実行すると、MQのインストールとデータパスを表示することができます。

このような出力が表示されるはずです。

MQバージョン表示用出力

dspmqコマンドを使って、実行中のキューマネージャーを表示することができます。

このような出力が表示されるはずです。

実行中のキュー・マネージャーを表示するための出力

Dockerコンテナから出てコマンドラインに戻るには、exitと入力してEnterを押します。

これまでに行ってきたこと

事前に構築されたDockerイメージをダウンロードし、コンテナを実行して、RHEL上でMQを動作させました。クライアントアプリケーションがキューマネージャーに接続し、キューとの間でメッセージを送受信するために必要なIBM MQオブジェクトとパーミッションは自動的に作成されます。DockerとMQはあなたのホストコンピュータのリソースと接続性を使用しています。

コンテナの中では、RHEL上のMQインストールは以下のオブジェクトを持っています。

  • キューマネジャ QM1
  • キューDEV.QUEUE.1.
  • Channel:チャンネル: dev.app.svrconn
  • リスナーです。ポート1414のSYSTEM.LISTENER.TCP.1

使用するキューDEV.QUEUE.1は、キューマネージャーQM1に「住んで」います。QM1にはリスナーがあり、例えばポート1414への接続を監視します。*クライアント・アプリケーションはキュー・マネージャに接続することができ、 *メッセージをオープン、プット、ゲットしたり、キューをクローズしたりすることができます

アプリケーションは、キューイングマネージャに接続するために MQチャンネル を使用します。これらの3つのオブジェクトへのアクセスは、異なる方法で制限されています。例えば、グループ "mqclient "のメンバーであるユーザー "app "は、チャンネルDEV.APP.SVRCONNを使用してキューマネージャーQM1に接続することが許可されており、キューDEV.QUEUE.1にメッセージを入れたり、キューからメッセージを取得することが許可されています。

クライアントアプリケーションが必要とするすべてのMQオブジェクトとパーミッションは、MQサーバコンテナの実行時に作成および構成されます。

MQ用Dockerイメージのオブジェクトとパーミッション

まとめ

このチュートリアルでは、MQキュー・マネージャーをコンテナ内に立ち上げました。このコンテナには、クライアントからの接続を許可するための開発者用設定がプリセットされています。

キュー・マネージャーに接続する独自のクライアント・アプリケーションを開発する際には、以下の手順に従ってください。

    1. キュー・マネージャーへの接続を設定する。 2.キューを開く。 3.メッセージをキューに入れる。 4.キューからメッセージを取得する。 5.キュー・マネージャーへの接続を閉じる。

このプロセスは、ポイントツーポイントスタイルのメッセージングを示しています。

IBM MQでは、キュー・マネージャーはシステムの実質的なサーバーであり、キュー・マネージャーに接続するアプリケーションはクライアントです。

通常、すべてのMQオブジェクトが定義され、メッセージのルーティングが行われるMQサーバーを管理するのは、管理者です。クライアント・アプリケーションは開発者によって作成され、IBM MQは開発者がアプリケーションに組み込む必要のあるクライアント・ライブラリーを提供します。これらのライブラリはMQクライアントとも呼ばれ、管理者がMQサーバー側で設定したMQオブジェクトをアドレスして使用します。より複雑なシナリオでは、MQライブラリが重いメッセージング作業のほとんどを代行してくれるので、使い方を覚えるだけで十分です。

****メッセージングを動作させるためには、サーバー側とクライアント側の両方で設定が必要です。

MQクライアントアプリケーションの開発を始めたばかりの頃は、クライアントアプリケーションをテストするために、自分のキューマネージャとキューにアクセスする必要があります。事前に設定されたMQ in Dockerイメージと、そこから簡単に実行できるコンテナにより、キュー・マネージャへのアクセスが可能になり、独自のMQアプリケーションの開発を始める際に、MQオブジェクトを設定するための多くのオプションが提供されます。