このトピックに付属のサンプル・ファイル・セットを使って、
WebSphere MQ Everyplace を WebSphere
Business Integration Event Broker ブローカーにすばやく接続できます。これらのファイルを使用すれば、以下を行うことができます。
- 2 つの WebSphere MQ Everyplace キュー・マネージャー (ServerQM1 というサーバー、
および ClientQM1 というクライアント) の作成)
- この 2 つの間の接続の作成、
およびメッセージの経路指定に必要なキューの作成。
- メッセージ・ブローカーを介した、
サンプルの point-to-point メッセージまたはパブリッシュ/サブスクライブ・メッセージの伝送。
提供されるサンプルを変更することができます。これ以降、Java ソース・コードをコンパイルする必要があります。
以下のステップは、サンプルの実行方法を示しています。
ディレクトリー構造の記述は、Windows 環境を想定しています。
他のプラットフォームをご使用の場合、
これらのパスを適切に変更してください。
- WebSphere
Business Integration Event Broker 内の WebSphere MQ Everyplace、
および WebSphere MQ Everyplace 自体 (スタンドアロン) と通信するプログラムの実行場所である各システムごとに、
CLASSPATH を設定します。 以下を追加する必要があります。
- install_dir\classes\mqimqe.jar;
- install_dir\classes\MQeDevice.jar;
- install_dir\classes\MQeExamples.jar;
- install_dir\classes\MQeGateway.jar;
- install_dir\classes\MQeMQBridge.jar;
Windows の一部のバージョンでは、
1 つの CLASSPATH 設定につき 255 文字という制限があります。この制限による問題を回避するために、
クラスパスを新しい環境変数 (たとえば MQEPATH) に割り当てて、
%MQEPATH%; を CLASSPATH に追加することができます。
- サンプル・ファイルをコピーします。下にある各リンクを右クリックし、「名前を付けて選択 (Select
Target As...)」をクリックします。ファイルを保管したいディレクトリーを選択します。
- 次の .ini ファイルをコピーします。
- 以下の Java ソース・ファイルを同じディレクトリーにコピーします。
- Java ソース・ファイルをコンパイルします。
- WebSphere MQ Everyplace キュー・マネージャーを WebSphere MQ Everyplace クライアント上に作成します。 ファイル名は大文字小文字を区別します。表示されているとおりに指定してください。
コマンド・プロンプトから、以下のように入力します。
java examples.install.CreateQueueManager
「構成ファイル (Configuration File)」ボックスで、
ClientQM1.ini ファイルを探して選択します (このファイルは、
ディレクトリー install_dir¥examples¥MQe にあります)。キューのディレクトリーを x:¥ClientQM1 に設定します (x は任意のドライブ名)。「OK」をクリックします。
ClientQM1 という名前の WebSphere MQ Everyplace クライアント・キュー・マネージャーが作成され、
そのレジストリーは x:¥ClientQM1¥Registry に配置されます。
- WebSphere MQ Everyplace サーバー・キュー・マネージャーを WebSphere
Business Integration Event Broker 内に作成します。 ファイル名は大文字小文字を区別します。表示されているとおりに指定してください。
コマンド・プロンプトから、以下のように入力します。
java examples.install.CreateQueueManager
「構成ファイル (Configuration File)」ボックスで、
ServerQM.ini ファイルを探して選択します (このファイルは、
ディレクトリー install_dir¥examples¥MQe にあります)。キューのディレクトリーを x:¥ServerQM1 に設定します。「OK」をクリックします。
ServerQM1 という名前の WebSphere MQ Everyplace サーバー・キュー・マネージャーが作成され、
そのレジストリーは x:¥ServerQM1¥Registry に配置されます。
サンプルの ServerQM1.ini ファイルを開いて見ていくと、リスナーがポート 8081 で listen するよう設定されているのがわかります。この設定は、キュー・マネージャーの作成時に無視されます。
後で構成するときに、
MQeInput ノードの設定を構成ファイルから継承するよう選択した場合には、
このポート番号が使用されます。
サーバー・キュー・マネージャーの作成時に以下のような内容のエラーが発生した場合、
com.ibm.broker.mqimqe.examples.rule.AttributeRule
CLASSPATH で
install_dir¥classes¥mqimqe.jar が正しく参照されていることを確認してください。
- メッセージ・フローを構成します。 既存のメッセージ・フローに WebSphere MQ Everyplace ノードを追加します。
あるいは、新しいフローを作成することもできます。「ブローカー・アプリケーション開発 (Broker Application Development)」パースペクティブに切り替えます。ノードをメッセージ・フローの中に追加します。
(パブリッシュ/サブスクライブでない) point-to-point メッセージングの場合、
MQeInput ノードと MQeOutput ノードをそれぞれ含める必要があります。
パブリッシュ/サブスクライブ・メッセージングの場合、
MQeInput ノードと Publication ノードをそれぞれ含める必要があります。
- MQeInput ノードの構成
- このサンプルの場合、
(「一般」タブの)「キュー名」だけを設定します。
各 MQeInput ノードごとに、異なるキュー名にする必要があります。
下記のステップ 8 では、
サンプルとしてキュー名 MQeInputQ1 を使用します。
さらに、他の構成変更 (たとえばトレース・レベルの設定) を独自に行うこともできますが、
変更しなくてもこれらのスクリプトは実行できます。
- MQeOutput ノードの構成
- 「宛先モード (Destination Mode)」 (「拡張 (Advanced)」タブの) が「宛先リスト (Destination
List)」であることを確認してください。その他のフィールドはすべてブランクにします。
- Publication ノードの構成
- アクションは不要です。
- メッセージ・フローをデプロイします。
メッセージ・フローを保管し、エラーがないかどうかを調べます。
メッセージ・フローを bar ファイルに追加し、それをブローカーにデプロイします。
イベント・ログで、
正常にデプロイされたことを確認します。
メッセージ BIP4040I および BIP2056I が表示されるはずです。
- クライアントが始動するとき、
クライアント・キュー・マネージャーも始動します。
- MQeInput ノードが実行中で、
WebSphere
Business Integration Event Broker ブローカーの実行場所のフロー内にデプロイされている場合に限り、
サーバー・キュー・マネージャーが始動します。
- さらに、
point-to-point メッセージ・フロー (MQeInput から MQeOutput) をデプロイしたときにも、
WebSphere MQ Everyplace サーバー・キュー・マネージャーが始動します。
- WebSphere MQ Everyplace キュー・マネージャーをセットアップします。
WebSphere MQ Everyplace キュー・マネージャーをセットアップするには、プログラム SetupMQeExample1 および SetupMQeExample2 をコンパイルして実行します。
- SetupMQeExample1 は、
クライアント・キュー・マネージャーがサーバー・キュー・マネージャーと通信できるようにするための経路を作成します。
- SetupMQeExample2 は、
このサンプルでメッセージ返信に使用する Inbox というキューをサーバー・キュー・マネージャー上に作成します。
これらのプログラムには、以下のパラメーターを入力します。
SetupMQeExample1 では、
以下の 5 つのパラメーターがすべて必須です。SetupMQeExample2 では、最初の 2 つだけが必須です。
- WebSphere MQ Everyplace キュー・マネージャー名 (この例では ServerQM1)。
- WebSphere MQ Everyplace クライアント構成ファイルのパス (この例では ClientQM1.ini)。
- WebSphere MQ Everyplace サーバーの IP アドレス (この例では 1.23.45.678)。
- WebSphere MQ Everyplace サーバーが listen するポート。このポート番号は、
MQeInput ノードのプロパティー・ダイアログの「リスナー」タブに指定された「ポート」と一致する必要があります。
デフォルトでは、
MQeInput ノード・プロパティーのポート番号は 8081 です。
- WebSphere
Business Integration Event Broker ブローカーのホストとなっている WebSphere MQ キュー・マネージャーの名前 (たとえば、WBRK_QM)。
たとえば、コマンド・プロンプトでは、java SetupMQeExample1 ServerQM1 ClientQM1.ini 1.23.45.678 8081 WBRK_QM
- メッセージ・フローを介してメッセージを送信します。
- point-to-point メッセージの場合、
SendMessages を使用します。
これによって、
MQeMsgObj クラスおよび MQeMbMsgObj クラスを使ってメッセージが送信されます。
- パブリッシュ/サブスクライブ・メッセージの場合、
SendPubSubMessages を使用します。
これによって、メッセージのサブスクライブ、パブリッシュ、
読み取り、およびアンサブスクライブが実行されます。
このどちらのプログラムも、
以下のような 5 つの必須パラメーターを表示される順序ですべて必要とします。
- WebSphere MQ Everyplace キュー・マネージャー名 (この例では ServerQM1)。
- WebSphere MQ Everyplace クライアント構成ファイルのパス (ClientQM1.ini)。
- WebSphere
Business Integration Event Broker ブローカーのホストとなっている WebSphere MQ キュー・マネージャーの名前 (たとえば、WBRK_QM)。
- 入力を受け取る WebSphere MQ ブリッジ・キューの名前 (MQInput ノードの「キュー名」プロパティーで指定したキュー、
たとえば MQeInputQ1)。
- ブローカーから戻されるメッセージを受信する WebSphere MQ Everyplace キューの名前。サンプル・コードでは Inbox というキューを作成しますが、
定義済みの WebSphere MQ Everyplace キューがすでに存在する場合は、
そのキューを指定することもできます。
このキューが存在しない場合、例外を受け取ります。
検索されたメッセージには、予期されるフィールドのすべてが含まれているわけではありません。
この例外を受け取ったものの、
キューがすでに作成
済みの場合には、
取得試行の制限に達してメッセージを取得できないのが原因です。
たとえば、point-to-point メッセージを送信するには、
コマンド・プロンプトで以下のように入力します。
java SendMessages ServerQM1 ClientQM1.ini WBRK_QM MQeInputQ1 Inbox
MQeMsgObject オブジェクトを使って構成されたブローカーに対してメッセージを送る場合、
すべてのフィールドがブローカーに送信されると、
出力は以下のようになります。
Reading message from queue
Message: This is the payload
Own message tag: My own tag with some data
MQeMbMsgObject オブジェクトを使って構成されたブローカーに対してメッセージを送る場合、
ブローカーと互換性のあるフィールドだけが送信されると、
出力は以下のようになります。
Reading message from queue
Message: This is the payload
たとえば、publish/subscribe メッセージを送信するには、
コマンド・プロンプトで以下のように入力します。
java SendPubSubMessages ServerQM1 ClientQM1.ini WBRK_QM MQeInputQ1 Inbox
メッセージが正常に送られて受信されると、
出力は以下のようになります。
Started queue manager: ClientQM1
Subscribing to the topics:
climate
humidity
temperature
Put message to QM/queue: WBRK_QM/MQeInputQ2
Publishing message to topic 'climate'
Reading message from queue
Topic: climate
Message: sunny
un-subscribing from the topics:
climate
humidity
temperature
Put message to QM/queue: WBRK_QM/MQeInputQ2
(ここで、MQeInputQ2 は使用する MQeInput ノードの名前)
ブローカー・キュー・マネージャーおよび
WebSphere MQ ブリッジ・キューへのメッセージ書き込みが試行された後、
次のような
WebSphere MQ Everyplace 例外が表示される場合には、
java.net.ConnectException: Connection refused
以下の点を検査する必要があります。
- ブローカーが開始済みであること (mqsistart brokername)。
- SetupMQeExample1 実行時に指定したポート番号が、
MQeInput ノードの「リスナー」タブに指定されたポート番号と一致すること。
- そのポート番号で実行中のリスナーが存在すること (これを確認するには、
コマンド・プロンプトで netstat と入力します)。
- WebSphere MQ Everyplace ブリッジ・キュー名を指定済みであること。
(このパラメーターを指定しなくても、
正常にデプロイされたように見えます。)