ワーカー タスクをさまざまなサーバーに送信する ActiveMQ ベースのメッセージング サービスの実装を開始していますが、デフォルト モードでは、誰もプロデューサーのトピックを「リッスン」していない場合、そのプロデューサーからのメッセージが失われることに気付きました。
すなわち、
- Producer が Live Broker を使用してメッセージを送信する場合
- しかし、耳を傾ける消費者はいません
- メッセージはどこにも行きません
代わりに、少なくとも 1 つのリスナーがメッセージを受信するまで、ブローカーがメッセージを保持するようにしたいと考えています。
私はこれを実装するいくつかの方法を試していますが、最も最適な/正しい方法についてはわかりません:
- メッセージ確認機能を実装する
- (これに対する注意点は、プロデューサーがすべてのメッセージの後にリスナーを待機する必要があることです。これは、非常に不格好で最後の手段と思われます...)
- セッション トランザクションを実装する
- (私はこれに問題があります。トランザクションという言葉のためにここで使用するのが正しいように聞こえますが、生産者と消費者ではなく、生産者とブローカーの相互作用に関係していると思います)
理想的には、メッセージ (または一連のメッセージ) を送信するモードがあり、送信後にブール値が返され、メッセージが少なくとも 1 つのコンシューマーによってリッスンされたかどうかが示されます。