ストリーム

ストリームは、WebSphere MQ パブリッシュ/サブスクライブ・アプリケーションによって使用される、トピック区分化の方式です。 関連するトピックの集合がグループ化されて、個別のストリームになります。

ストリームを使用すると、トピックのグループごとに異なるセキュリティー管理を適用することができるので、ブローカーがパブリッシュするためのワークロードのバランスが改善されます。

WebSphere Message Broker にはアプリケーションがこれら両方の動作を実行する他の方法も備わっていますが、ストリームの概念は MQRFH アプリケーションとの互換性のためにサポートされています。

WebSphere Message Broker では、MQRFH クライアント・アプリケーションが MQPSStreamName コマンド・パラメーターを サブスクリプションおよびパブリケーションで指定できます。 ただし、ストリーム名は、WebSphere MQ パブリッシュ/サブスクライブの区分化特性を保存するためにトピックを変更する目的のみに使用されます。

メッセージに関連したストリームの名前が SYSTEM.BROKER.DEFAULT.STREAM ではない場合、そのメッセージはメッセージ内で言及されたトピックに接頭部として ストリング $SYS/STREAM/<streamname>/ が付いているものとして処理されます。 例えば、ストリーム名 StreamX を指定する Topic1 に対するサブスクリプションは、トピック $SYS/STREAM/StreamX/Topic1 に対するサブスクリプションが 行われたものとして処理されます。

さらに MQRFH2 パブリッシュおよびサブスクライブ・アプリケーションは、WebSphere Message Broker ブローカーに送信するメッセージでストリーム名を指定することはできませんが、ストリーム関連のトピックをターゲットとすることができます。 この場合、トピックに適切なストリーム接頭部を付ける必要があります。

例えば、MQRFH2 サブスクライバーは WebSphere MQ パブリッシュ/サブスクライブ・ネットワーク内のストリーム STOCK.STREAM に パブリッシュされたトピック IBM/Latest にサブスクライブするために、トピック $SYS/STREAM/STOCK.STREAM/IBM/Latest を指定する必要があります。

WebSphere MQ パブリッシュ/サブスクライブでは、ストリーム関連のパブリケーションをストリームと同じ名前のキュー だけに送信できます。 しかし WebSphere Message Broker ではパブリッシュ元のクライアントがパブリケーションをメッセージ・フロー内の 任意の入力キューに送信できます。 パブリケーション内のストリーム名パラメーターを指定するために明示的に選択する MQRFH アプリケーションは、それを WebSphere Message Broker ブローカーからサービスを受ける任意のパブリケーション・キューに送信できます。 キューの名前は、ストリームの名前と同じにする必要はありません。 ただし、この動作はパブリケーションを受信する順序に影響を与えることがあります。 このことがアプリケーションにとって重大であるかどうかを検討してください。

各パブリケーション・ノードには暗黙的ストリーム命名 プロパティーがあり、そのデフォルトは true です。 このデフォルト・オプションによって、MQRFH パブリケーションに明示的なストリーム名が含まれない 場合の WebSphere MQ パブリッシュ/サブスクライブでの動作と同じ動作が生じます。 このプロパティーが false で、パブリケーションに明示的な ストリーム名が含まれない場合、ストリーム名として SYSTEM.BROKER.DEFAULT.STREAM が推定されます。

メッセージをパブリッシュする MQRFH および MQRFH2 の両方のクライアント・アプリケーション で使用可能なオプションを、以下の表に示します。 この表では、デフォルトのストリームのオプション、および StreamX という名前のストリーム例のオプションを示します。

  MQRFH パブリッシャー   MQRFH2 パブリッシャー  
  デフォルトのストリーム StreamX デフォルトのストリーム StreamX
MQRFH サブスクライバー S1、P1 S2、P2 S1、P3 S2、P4
MQRFH2 サブスクライバー S3、P1 S4、P2 S3、P3 S4、P4

サブスクライバーの注記

S1
サブスクライバーは、ストリーム名なしか、またはストリーム名 SYSTEM.BROKER.DEFAULT.STREAM でサブスクライブします。
S2
サブスクライバーは、ストリーム名 StreamX でサブスクライブします。
S3
サブスクライバーは、$SYS/STREAM/<streamname>/ を追加しないでトピックにサブスクライブします。
S4
サブスクライバーは、$SYS/STREAM/StreamX/ のある接頭部トピックにサブスクライブします。

パブリッシャーの注記

P1
パブリッシャーは、ストリーム名 SYSTEM.BROKER.DEFAULT.STREAM を指定して任意のキューにパブリッシュするか、 またはストリーム名を指定しないで「暗黙的ストリーム命名」 プロパティーが「false」に設定された任意のキューにパブリッシュします。
P2
パブリッシャーは、ストリーム名 StreamX を指定して任意のキューにパブリッシュするか、 またはストリーム名を指定しないで「暗黙的ストリーム命名」 プロパティーが「true」に設定されたキュー StreamX にパブリッシュします。
P3
パブリッシャーは、接頭部 $SYS/STREAM/<Stream>/ をトピックに追加しないで任意のキューにパブリッシュします。
P4
パブリッシャーは、接頭部 $SYS/STREAM/StreamX/ をトピックに追加して任意のキューにパブリッシュします。
注: $SYS/STREAM/<streamname>/ 接頭部は、MQRFH2 パブリケーションが MQRFH サブスクライバーに配送されるとき、そのすべてのトピックから除去されます。

ストリームおよび近隣ブローカー

WebSphere MQ パブリッシュ/サブスクライブ・ネットワークでは、ブローカーは、近隣ブローカーと同じストリームのセットをサポートする必要はありません。 ブローカーが近隣ブローカーの 1 つがサポートするストリームをサポートしていない場合、そのストリームに関連したパブリケーションをそのブローカーのクライアントは使用できません。

WebSphere Message Broker ブローカーがネットワークに結合すると、それは近隣 WebSphere MQ パブリッシュ/サブスクライブ・ブローカーのすべてのストリームをサポートします。 つまり、WebSphere Message Broker ブローカーのクライアントは、近隣 WebSphere MQ パブリッシュ/サブスクライブがサポートするすべてのストリームを パブリケーションの宛先とすることができます。

しかし、これらのパブリケーションを使用可能にするには、WebSphere Message Broker ブローカーにストリーム・キューを定義すること、およびそれらをサポートするメッセージ・フローを定義およびデプロイすることが必要です。

WebSphere Message Broker ブローカーをマルチストリームの WebSphere MQ パブリッシュ/サブスクライブ環境に追加することの効果は、以下の図で例示されています。 WebSphere Message Broker ブローカーの NEWBROKER を使用して、WebSphere MQ パブリッシュ/サブスクライブ・ブローカーの BROKERA および BROKERB が結合されています。

異機種のネットワーク


異機種のネットワークこの図では、<ph conref='edvent.dita#edvent/mqsi'></ph> ブローカー NEWBROKER が 2 つの <ph conref='edvent.dita#edvent/sdk'></ph>・ブローカー BROKERA と BROKERB との間に配置されています。 また、2 つの <ph conref='edvent.dita#edvent/sdk'></ph>・ブローカーのそれぞれに関連したストリームをリストしています。

デフォルトのストリーム・キュー SYSTEM.BROKER.DEFAULT.STREAM は、WebSphere MQ パブリッシュ/サブスクライブ・ネットワーク内のすべてのブローカーによって常にサポートされていて、異機種のネットワーク内にあるすべての WebSphere Message Broker ブローカーで定義する必要があります。 各ブローカーでは、このキューにサービスを提供するためのメッセージ・フローを 定義およびデプロイする必要があります。

WebSphere Message Brokerブローカーが WebSphere MQ パブリッシュ/サブスクライブ・ネットワークに組み込まれて、ストリームを共用する 複数の WebSphere MQ パブリッシュ/サブスクライブ・ブローカーがリンクされる場合、WebSphere Message Broker ブローカーにストリーム・キューを定義すること、およびそれらにサービスを提供するメッセージ・フローを定義およびデプロイすることが必要です。

例えば、WebSphere Message Broker ブローカー NEWBROKER には BULLETIN.STREAM に定義されたストリーム・キューが必要です。 さらに、そのキューにパブリケーション・サービスを提供するためにメッセージ・フローが定義およびデプロイされている必要もあります。

近隣 WebSphere MQ パブリッシュ/サブスクライブの 1 つがこれらのキューの 1 つにメッセージを送信できる場合に限り、ストリーム・キューおよび関連したメッセージ・フローを 図に示された他のストリームの WebSphere Message Broker ブローカーに定義する必要があります。 以下のイベントのいずれかが生じた場合に、メッセージが送信されます。
  1. これらのストリームの 1 つに存在するパブリケーションに対するサブスクリプションは、WebSphere Message Broker ブローカーのクライアントによって登録されます。
  2. ストリームのための DeletePublication コマンドは、ブローカー・ネットワーク内のどこかに存在するクライアントによって出されます。
上記の事柄が生じるかどうかが不確かな場合は、近隣 WebSphere MQ パブリッシュ/サブスクライブによってサポートされている すべてのストリームに対して WebSphere Message Broker ブローカー内にストリーム・キューおよびメッセージ・フローを作成します。 これを行わない場合、以下の事柄が生じる可能性があります。
  • ストリーム・キューがそのブローカーに存在しない場合、WebSphere MQ パブリッシュ/サブスクライブ・ブローカーから送られたメッセージは WebSphere Message Broker ブローカーのデッド・レター・キュー (DLQ) に入れられます。
  • ストリーム・キューが存在してもそれにサービスを提供するメッセージ・フローがデプロイされていない場合、メッセージは WebSphere Message Broker ブローカー上のストリーム・キューに溜まります。

ストリームとマイグレーション

WebSphere MQ パブリッシュ/サブスクライブ・ブローカーが WebSphere Message Broker ブローカーに (migmqbrk コマンドを使用して) マイグレーションされるとき、マイグレーションの際にサポートされているストリームは WebSphere Message Broker 内に正確に複製されます。 その後に変更を行うことはできません。 つまり、この複製されたセットにストリームを追加したりそこからストリームを除去することはできません。 これらのストリームすべてを処理するメッセージ・フローを作成してデプロイするまで、マイグレーションは完了しません。

関連タスク
サブスクライブ
関連資料
MQRFH2 ヘッダー
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
aq01180_