0

ジョブディスパッチャとして ActiveMQ を使用しています。つまり、1 つのマスターがジョブ メッセージを ActiveMQ に送信し、複数のスレーブが ActiveMQ からジョブ メッセージを取得して処理します。スレーブが 1 つのジョブを完了すると、job_id を含むメッセージを ActiveMQ に送り返します。

ただし、スレーブは信頼できません。1 つのスレーブが一定期間内に応答しない場合、スレーブがダウンしていると見なして、送信されたジョブ メッセージの再配信を試みることができます。

この再配達を実現するための良いアイデアはありますか?

4

1 に答える 1

0

通常、コンシューマは再配信を処理するため、メッセージがブローカで処理中として表示されている間、メッセージの順序を維持できます。これは、そのコンシューマーが終了しない限り、再配信が単一のコンシューマーに限定されることを意味します。このようにして、ブローカーは再配信を認識しません。

ActiveMQ v5.7+ では、ブローカー側の再配信を使用するオプションがあり、再送信を使用して遅延後にブローカーにメッセージを再配信させることができます。これは、スケジューラを介した再配信による配信不能処理を処理するブローカー プラグインによって実装されます。これは、メッセージの順序全体が重要ではなく、コンシューマー間のスループットと負荷分散が重要な場合に役立ちます。ブローカーの再配信により、特定のコンシューマーへの配信に失敗したメッセージをすぐに再配信できます。

構成ファイルでこれを設定する例については、ActiveMQ のドキュメントを参照してください。

于 2013-03-19T15:03:49.960 に答える