ストリームは、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 |
WebSphere MQ パブリッシュ/サブスクライブ・ネットワークでは、ブローカーは、近隣ブローカーと同じストリームのセットをサポートする必要はありません。 ブローカーが近隣ブローカーの 1 つがサポートするストリームをサポートしていない場合、そのストリームに関連したパブリケーションをそのブローカーのクライアントは使用できません。
WebSphere Message Broker ブローカーがネットワークに結合すると、それは近隣 WebSphere MQ パブリッシュ/サブスクライブ・ブローカーのすべてのストリームをサポートします。 つまり、WebSphere Message Broker ブローカーのクライアントは、近隣 WebSphere MQ パブリッシュ/サブスクライブがサポートするすべてのストリームを パブリケーションの宛先とすることができます。
しかし、これらのパブリケーションを使用可能にするには、WebSphere Message Broker ブローカーにストリーム・キューを定義すること、およびそれらをサポートするメッセージ・フローを定義およびデプロイすることが必要です。
異機種のネットワーク
デフォルトのストリーム・キュー 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 パブリッシュ/サブスクライブ・ブローカーが WebSphere Message Broker ブローカーに (migmqbrk コマンドを使用して) マイグレーションされるとき、マイグレーションの際にサポートされているストリームは WebSphere Message Broker 内に正確に複製されます。 その後に変更を行うことはできません。 つまり、この複製されたセットにストリームを追加したりそこからストリームを除去することはできません。 これらのストリームすべてを処理するメッセージ・フローを作成してデプロイするまで、マイグレーションは完了しません。