クライアントが送受信する「ペイロード」メッセージと Message Queue 自体が使用する制御メッセージ (ブローカ通知など) は、クライアントとブローカ間の同じ接続でやり取りされるため、ペイロードのトラフィックが過剰になると、制御メッセージの配信が妨げられる可能性があります。この問題を軽減するために、表 16–5 に示されている接続ファクトリ属性を使用して、2 種類のメッセージの相対的なフローを管理できます。これらの属性は、4 つのカテゴリに分類されます。
通知タイムアウト: 例外をスローするまでのブローカ通知の最大待ち時間 (imqAckTimeout) を指定します。
接続フロー測定: ペイロードメッセージの転送を、指定したサイズ (imqConnectionFlowCount) のバッチに制限します。これにより、累積された制御メッセージを配信する機会が定期的に得られます。
接続フロー制御: 特定の接続で、消費を待って保留状態になるペイロードメッセージの数 (imqConnectionFlowLimit) を制限します。制限に達すると、消費待ちのメッセージの数が制限を下回るまで、その接続へのペイロードメッセージの配信が一時停止されます。この機能の使用は、ブール型のフラグ (imqConnectionFlowLimitEnabled) によって制御します。
コンシューマフロー制御: 単一のコンシューマに対して、消費を待って保留状態になるペイロードメッセージの数 (imqConsumerFlowLimit) を制限します。この制限は、特定のキュー送信先のプロパティー (consumerFlowLimit) として指定することもできます。制限に達すると、消費待ちのメッセージの数が、imqConsumerFlowLimit に対する割合として imqConsumerFlowThreshold 属性で指定した制限を下回るまで、そのコンシューマへのペイロードメッセージの配信が一時停止されます。同じ接続上で 1 つのコンシューマがほかのコンシューマの通信を妨げるのを回避することによって、複数のコンシューマ間のロードバランスを向上させるのに役立ちます。
これらのフロー制御技術のいずれを使用する場合でも、信頼性とスループットの兼ね合いを考慮する必要があります。詳細は、「クライアントランタイムのメッセージフローの調整」を参照してください。