WebSphere MQ パブリッシュ/サブスクライブでは、1 つのスレッドが、各ストリーム・キューのパブリケーションを処理します。 これにより、キューからパブリケーションを処理する順序が保証されます。
WebSphere Message Broker ブローカー・ドメインでのパブリケーションのスループットを考慮する際には、 メッセージがパブリッシュされる順序の重要性も考慮しなければなりません。 スループットを改善する技法を使用しても、必ずしも順序が保証されるわけではありません。
複数のスレッドが 1 つのキューのメッセージを処理する場合、パブリケーションは、 入力キューに置かれた順序でサブスクライバー配信されることは保証されません。 しかし WebSphere Message Broker では、 求められた順序を保ちながら、パブリケーションを並行して処理する方法が備えられています。
MQInput ノードの「順序モード」プロパティーを、「ユーザー ID 順」の値に設定できます。これにより、ブローカーに送信されるパブリケーションの配信順序が、指定したユーザー順になります。 このプロパティーが設定されると、メッセージ・フローにサービスを提供する他のスレッドが、 指定した UserIdentifier フィールドを含むメッセージの処理を行っている場合、MQMD では、 同じ UserIdentifier を含むメッセージの処理は保留されます。
メッセージ・フローの別のインスタンスを実行する利点は、 すべてのパブリッシュ・アプリケーションが同じユーザー ID の下で実行されるとなくなります。 このことは、ブローカーのキュー・マネージャーに対してリモート側のキュー・マネージャーに接続されているパブリッシュ・アプリケーションに当てはまることがあります。 これらのリモート・パブリッシャーからのメッセージは、起点となるクライアントの ユーザー ID の代わりに、 チャネル・プログラムのユーザー ID を挿入するよう設定された可能性のあるチャネルでブローカーに到着します。 デフォルトのチャネル動作を変更するよう PUTAUT チャネル属性を設定する方法については、「WebSphere MQ 相互通信」を参照してください。
この方法を使用してスループットを改善する場合、 パブリケーションの配信順序に与える影響を考慮する必要があります。 特に、順序が重要な場合には、 パブリッシャー・アプリケーションがパブリッシュする各トピックごとに分割され、 トピックごとの順序が維持できることを確認しなければなりません。 アプリケーションが、同じトピックの異なるキュー (メッセージ・フロー) にパブリッシュする場合、 順序は保証できません。
パブリッシャー・アプリケーションを更新し、 パブリッシュするストリームに対して別の名前を持つ新しいキューにパブリケーションを送信する場合、 MQPSStreamName パラメーターを使用してパブリケーション内にそのストリーム名を明示的に含めるように、 これらのアプリケーションをさらに更新しなければなりません。