パブリッシュ/サブスクライブのサンプル・プログラム

パブリッシュ/サブスクライブのサンプル・プログラムは、 IBM® MQのパブリッシュ機能とサブスクライブ機能の使用法を示しています。

IBM MQ パブリッシュ/サブスクライブ・インターフェースに対してプログラムを作成する方法を示す C 言語のサンプル・プログラムが 3 つあります。 古いインターフェースを使用する C サンプルがいくつかあります。また、 Java サンプルもあります。 Java サンプルは、 com.ibm.mq.jar 内の IBM MQ パブリッシュ/サブスクライブ・インターフェースと com.ibm.mqjms内の JMS パブリッシュ/サブスクライブ・インターフェースを使用します。 このトピックでは、 JMS のサンプルについては説明しません。

C

C サンプル・フォルダー内のパブリッシャー・サンプル amqspub を検索します。 最初のパラメーターとして任意のトピック名を指定し、2 番目のパラメーターとしてキュー・マネージャーの名前 (省略可能) を指定して、このサンプルを実行します。 例:amqspub mytopic QM3. amqspubcというクライアント・バージョンもあります。 クライアント・バージョンを実行することを選択した場合は、まず、 Multiplatforms でクライアント接続を受け入れるためのキュー・マネージャーの構成 を参照して詳細を確認してください。

パブリッシャーはデフォルトのキュー・マネージャーに接続し、以下の出力で応答します。target topic is mytopicこれ以降、このウィンドウに入力するすべての行が、以下に対して公開されます。mytopic.

同じディレクトリー内の別のコマンド・ウィンドウを開き、サブスクライバー・プログラム amqssub を実行し、同じトピック名とオプションのキュー・マネージャー名を指定して、それを実行します。 例:amqssub mytopic QM3.

サブスクライバーは、以下の出力で応答します。Calling MQGET : 30 seconds wait timeこれからは、パブリッシャーに入力した行がサブスクライバーの出力に表示されます。

もう 1 つ別のコマンド・ウィンドウでもう 1 つ別のサブスクライバーを始動し、2 つのサブスクライバーがパブリケーションを受け取る様子を見てください。

パラメーターに関する完全な説明とオプションの設定に関する情報は、サンプルのソース・コードを参照してください。 サブスクライバー・オプション・フィールドの値については、 オプション (MQLONG)のトピックで説明されています。

別のサブスクライバー・サンプル amqssbx があり、コマンド行スイッチとして追加のサブスクリプション・オプションを提供しています。

タイプamqssbx -d mysub -t mytopic -kサブスクライバーの終了後に保持される永続サブスクリプションを使用してサブスクライバーを呼び出します。

サブスクリプションをテストするために、パブリッシャーを使用して別のアイテムをパブリッシュしてみてください。 30 秒間待機して、サブスクライバーが終了するのを待ちます。 同じトピックでさらにいくつかアイテムをパブリッシュします。 サブスクライバーを再始動します。 サブスクライバーが実行中でなかった間にパブリッシュされた最終アイテムが、サブスクライバーが再始動した後すぐに表示されます。

C レガシー

キューに入れられたコマンドについて例を示す C のサンプルのセットが他にいくつかあります。 それらのサンプルのうちいくつかは、当初は MQ0C Supportpac の一部として提供されていました。 これらのサンプルで示されている機能は、互換性の目的で完全にサポートされています。

キューに入れられたコマンドのインターフェースを使用することはお勧めできません。 パブリッシュ/サブスクライブの API よりずっと複雑で、キューに入れられたコマンドの複雑なプログラミングを行うことに見合うだけの機能上のメリットもありません。 しかし、キューに入れられたコマンドの方式が適していると考えられるケースとして、そのインターフェースを既に使用している場合や、従来と異なる MQSUB 呼び出しを作成するよりも、複雑なメッセージを作成して汎用的な MQPUT を呼び出す方が容易であるようなプログラミング環境を使用している場合があります。

追加のサンプルは、samples フォルダー内の pubsub サブディレクトリーにあります。

表 1には、6 つのタイプのサンプルがリストされています。
表 1. パブリッシュ/サブスクライブに関する既存のサンプル C プログラムのカテゴリー
カテゴリー プログラム コメント
RFH1
  • amqssr1a.c
  • amqspr1a.c
RFH1 形式のメッセージを使用して作成した、単純なパブリッシュ/サブスクライブの例。
RFH2
  • amqssr2a.c
  • amqspr2a.c
RFH2 形式のメッセージを使用して作成した、単純なパブリッシュ/サブスクライブの例。
MQAI サンプル
  • amqsppca.c
  • amqsspca.c
PCF コマンドと MQAI コマンド・インターフェースを使用して作成した、単純なパブリッシュ/サブスクライブの例。
RFH1 を使用する MA0C 結果サービス
  • amqsgama.c
  • amqsresa.c
RFH1 ヘッダーを使用して作成した結果サービス
  1. amqsgama.tst および amqsresa.tst で定義されているキューが必要です
  2. amqsresaamqsgama より前に開始される必要があります
RFH2 を使用する MA0C 結果サービス
  • amqsgr2a.c
  • amqsrr2a.c
RFH2 ヘッダーを使用して作成した結果サービス
  1. amqsgama.tst および amqsresa.tst で定義されているキューが必要です
  2. amqsresaamqsgama より前に開始される必要があります
ルーティング出口によるパブリッシュ/サブスクライブの例
  • amqspsra.c
パブリッシュ/サブスクライブするメッセージについて、ルーティング出口でキューまたはキュー・マネージャーの宛先を変更する方法を示しています。

Java のサンプル・プログラム

Java サンプル MQPubSubApiSample.java は、パブリッシャーとサブスクライバーを 1 つのプログラムで結合します。 そのソースおよびコンパイル済みクラス・ファイルは、wmqjava サンプル・フォルダーにあります。

クライアント・モードで実行することを選択した場合、詳しくは、まず「 Multiplatforms でクライアント接続を受け入れるためのキュー・マネージャーの構成 」を参照してください。

Java 環境が構成されている場合は、 Java コマンドを使用してコマンド行からサンプルを実行します。 Java プログラミング・ワークベンチが既にセットアップされている IBM MQ Explorer Eclipse ワークスペースからサンプルを実行することもできます。

サンプル・プログラムを実行するために、プログラムのプロパティーの一部に変更が必要な場合があります。 それには、JVM に対してパラメーターを指定したり、ソースを編集したりします。

MQPubSubApiSampleの実行方法では Eclipseからサンプルを実行する方法が説明されています。