サブフローの設計に応じて、すなわちモデル化した Input ノードの数や、メッセージ・フロー BAR ファイルのデプロイメント・プロパティーと Input ノードのデプロイメント・プロパティーの全体的な構成などに応じて、WebSphere® Message
Broker が実行時にスレッドを処理する方法が変わってきます。これは、ソリューションのパフォーマンスやメッセージ並列処理の実行時の動作に影響を与える可能性があります。
このタスクについて
メッセージ・フローまたはサブフローの設計時は、メッセージ・フロー・ノードとサブフローを接続して、統合ソリューションのロジックを定義します。メッセージ・フロー内では、MQInput ノードなど、1 つ以上の Input ノードを使用して、メッセージ・フローによってメッセージを受信する方法をモデル化します。メッセージ・フロー内の最初のノードがサブフローの場合、そのサブフローに 1 つ以上の Input ノードが含まれる必要があります。メッセージ・フローの中間に、Input ノードが組み込まれたサブフローを置くこともできます。
メッセージ・フローに組み込まれるサブフローを設計し、統合ソリューションが含まれる BAR ファイルを構成するときは、以下の質問を検討してください。
- メッセージ・フローで使用する MQInput ノードなどの Input ノードの数はいくつですか? サブフローにはいくつの Input ノードがありますか?
注: Input ノードの数によって、メッセージを処理するために WebSphere Message
Broker によって割り振られるデフォルトのスレッド数が決まります。
- メッセージ・フローを実行するために WebSphere Message
Broker で必要となるスレッドの数を計算しましたか?
- メッセージ・フローの開始時にすべてのインスタンスを開始する予定ですか? はいの場合、開始時に割り振られるスレッドがいくつあるか、およびシステム内でリソースを競合するその他のソリューションにはどのようなものがあるかについて考慮してください。
- メッセージの処理時、順序に関して何か要件がありますか? はいの場合、Input ノードはメッセージを順不同で受け取る可能性があり、正しいメッセージの到着を待ってからメッセージの処理を再開する点を考慮してください。インスタンスを追加すると、リソースのボトルネックを招くおそれがあり、ソリューションのパフォーマンス改善にはつながりません。
- メッセージ・フロー設計およびサブフローに複数の Input ノードが含まれていますか? メッセージ・フローのロジックを続行する前に、それらの Input ノードを介してメッセージを並行して受け取る必要がありますか? メッセージの受信に他のノードより時間のかかるノードがありますか?
リソースを構成する方法を決定するうえで、上記の質問に対する答えが役に立ちます。
追加インスタンスを作成するために選択すべきオプションを決定するときは、以下のルールを検討してください。
- 複数の Input ノードで共有されるインスタンスを作成するためには、メッセージ・フロー・レベルで「追加のインスタンス」プロパティーを設定する必要があります。
- 特定の Input ノードに割り振られるインスタンスを作成するためには、Input ノード・レベルで「追加のインスタンス」プロパティーを設定する必要があります。
さらに、追加インスタンスの構成方法に基づいた以下の動作も考慮する必要があります。
- 追加インスタンスを Input ノードに設定した場合、追加インスタンスまたは追加スレッドは、その特定の Input ノードに対してのみ実行されます。例えば、15 個の追加インスタンスが設定された Input ノード A と追加インスタンスが 0 個の Input ノード B があり、キュー B 上に処理待ちの作業がある場合でも、一度に 1 つのメッセージしか処理されません。Input ノード A に属しているスペアのインスタンスを、Input ノード B で受け取ったメッセージの処理に使用することはできません。
- メッセージ・フロー・レベルでスレッド・プールを設定した場合の欠点は、1 つの Input ノードがビジーになると、他の Input ノードがリソース不足になる可能性があることです。
それぞれの Input ノード上およびサブフロー上の処理の優先順位やメッセージ・フローの設計に基づいて、追加インスタンスを設定する方法を決定する必要があります。
1 つ以上の Input ノードが組み込まれるメッセージ・フローまたはサブフローを設計するときは、リソース割り振りとパフォーマンスに対する影響を考慮する必要があります。
次のタスク
メッセージ・フロー・レベルまたは Input ノード・レベルで追加インスタンスを割り振ります。詳しくは、メッセージ・フロー・レベルでのインスタンスの追加およびメッセージ・フロー・ノード・レベルでのインスタンスの追加を参照してください。