このトピックでは、ApsaraMQ for RocketMQのプロデューサーの概念について説明します。 また、メッセージングモデルにおけるプロデューサーの役割、プロデューサーの属性と互換性、およびプロデューサーとの作業に関するいくつかの使用法についても説明します。
定義
ApsaraMQ for RocketMQのプロデューサーは、メッセージを作成してサーバーに送信する機能的なメッセージングエンティティです。
プロデューサーは通常、ビジネスシステムに統合され、データをメッセージとしてApsaraMQ for RocketMQにカプセル化し、メッセージをサーバーに送信します。 メッセージの詳細については、「メッセージ」をご参照ください。
プロデューサー側では、次のメッセージ配信要素が定義されています。
送信モード: 作成者はAPI操作でメッセージ送信モードを指定できます。 ApsaraMQ for RocketMQは、同期送信と非同期送信をサポートします。 詳細については、「モデル」をご参照ください。
トランザクション動作: ApsaraMQ for RocketMQはトランザクションメッセージをサポートします。 プロデューサーは、トランザクションの最終的な一貫性を確保するためにトランザクションチェックに関与しています。 詳細については、「トランザクションメッセージ」をご参照ください。
プロデューサーとトピックは多対多の関係を持っています。 プロデューサーは複数のトピックにメッセージを送信でき、トピックは複数のプロデューサーからメッセージを受信できます。 この多対多の関係により、パフォーマンススケーリングとディザスタリカバリが容易になります。

モデル関係
次の図は、ApsaraMQ for RocketMQのメッセージングモデルにおけるプロデューサーの役割を示しています。
プロデューサーはメッセージを生成し、ApsaraMQ for RocketMQブローカーに送信します。
ApsaraMQ for RocketMQブローカーは、トピックで指定されたキューにメッセージを受信順に格納します。
コンシューマーは、指定されたサブスクリプションに基づいて、ApsaraMQ for RocketMQブローカーからメッセージを取得して消費します。
内部属性
配信再試行ポリシーは、メッセージ配信の試行が失敗したときに、作成者がメッセージの配信を再試行する方法を指定します。 詳細については、「メッセージ送信の再試行」をご参照ください。
互換性
ApsaraMQ for RocketMQバージョン5.x以降、プロデューサーは匿名であり、プロデューサーグループは廃止されます。 Message Queue For Apache RocketMQバージョン3.xおよびバージョン4.xでは、ビジネスに影響を与えることなく、既存のプロデューサーグループを廃止できます。
使用上の注意
個々のプロセスのプロデューサー数を制限することを推奨します。
ApsaraMQ for RocketMQでは、プロデューサーとトピックが多対多のコミュニケーションを提供します。 単一のプロデューサーが複数のトピックにメッセージを送信できます。 ビジネスシナリオに必要な最小数のプロデューサーを作成して初期化し、できるだけ多くのプロデューサーを再利用することをお勧めします。 たとえば、複数のトピックへのメッセージ配信が必要なシナリオでは、トピックごとにプロデューサーを作成する必要はありません。
定期的にプロデューサーを作成して破壊しないことをお勧めします。
ApsaraMQ for RocketMQのプロデューサーは、データベースの接続プールなど、再利用できる基盤となるリソースです。 メッセージを送信するたびにプロデューサーを作成したり、メッセージを送信した後にプロデューサーを破棄したりする必要はありません。 プロデューサーを定期的に作成して破棄すると、ブローカーで多数の短い接続リクエストが生成されます。 これにより、システムに高レベルの負荷がかかります。
正しい使用法の例
Producer p = ProducerBuilder.build(); for (int i =0;i<n;i++) { Message m= MessageBuilder.build(); p.send(m); } p.shutdown();不正な使用の例
for (int i =0;i<n;i++) { Producer p = ProducerBuilder.build(); Message m= MessageBuilder.build(); p.send(m); p.shutdown(); }