次のことを可能にするオープンソースのキューイングプラットフォームを検討しています: 複数のプロデューサー、複数のコンシューマーが、特定のユースケースでマルチスレッド環境のキューにデータを入れています: コンシューマーが次のことを実行できるようにしたい
- キューからのメッセージをピークします (他のコンシューマーが同じメッセージを消費できないように、メッセージをキューで非表示としてマークする必要があります)。
- コンシューマーは、消費されたメッセージを処理し、正常に処理できる場合は、メッセージを消費済みとしてマークし、キューから完全に削除する必要があります。
- メッセージを消費済みとしてマークした後、コンシューマーが突然終了した場合、または特定のタイムアウト後に消費の成功を確認できなかった場合、別のコンシューマーがそれを取得できるように、メッセージは再びキューに表示されます。
RabbitMQ、hornetQ、ActiveMQ を見てきましたが、この機能をすぐに使えるかどうかわかりません。この機能を提供するシステムに関する推奨事項はありますか?