このトピックでは、ApsaraMQ for RabbitMQ の接続とチャネルの概念について説明し、その使用上の注意点を示します。
接続
接続とは、物理的な伝送制御プロトコル( TCP )接続のことです。接続は、アプリケーションと ApsaraMQ for RabbitMQ の間に確立されます。接続は、認証、 IP アドレス解決、ルーティングなどの基盤となるネットワークタスクをサポートするために使用できます。アプリケーションと ApsaraMQ for RabbitMQ の間の接続の確立には、約 15 個の TCP パケットの相互作用が必要です。これにより、大量のネットワークリソースと ApsaraMQ for RabbitMQ リソースが消費されます。多数の接続は、ApsaraMQ for RabbitMQ に大きな負荷をかけ、 SYN フラッド攻撃に対する保護をトリガーすることさえあります。この場合、ApsaraMQ for RabbitMQ が応答に失敗し、ビジネスに影響を与える可能性があります。

チャネル
チャネルとは、物理的な TCP 接続に基づいて確立される仮想接続のことです。すべての AMQP ベースの操作は、アプリケーションと ApsaraMQ for RabbitMQ の間の接続のチャネルを介して実行されます。たとえば、キューはチャネルを介して作成され、メッセージはチャネルを介して送受信されます。各接続には複数のチャネルを含めることができます。チャネルは接続に依存しています。接続が閉じられると、その接続のすべてのチャネルも閉じられます。多数のアプリケーションを ApsaraMQ for RabbitMQ に接続してメッセージを送受信する場合、適切な数の接続を確立し、接続内の複数のチャネルを再利用して、システムリソースの使用量を削減することをお勧めします。

使用上の注意
持続的接続を使用します。接続を頻繁に開いたり閉じたりしないでください。接続を頻繁に開いたり閉じたりする必要がある場合は、適切な数の接続を維持しながら、複数のチャネルを再利用します。インスタンスで接続とチャネルを開くために呼び出される API 操作の制限については、「制限」をご参照ください。
接続数が少なく、消費されるデータ量が多い場合、消費の偏りが発生する可能性があります。この問題を防ぐために、各コンシューマーが確立する接続数、またはコンシューマーの数を増やすことができます。ただし、各コンシューマーが確立する接続数は同じである必要があります。すべてのコンシューマーが確立する接続の総数は 30 以上にすることをお勧めします。
複数のスレッドが 1 つの接続を共有できます。複数のプロセスが 1 つの接続を共有する場合、接続を頻繁に開いたり閉じたりしないでください。そうしないと、
ChannelNotFindエラーが発生する可能性があります。プロデューサーとコンシューマーは、異なる接続を使用してメッセージを生成および消費します。