RabbitMQ/AMQP についての私の理解に基づくと、残念なトレードオフが見られます。
通常のワークフローは次のとおりです。
- プロデューサーがプロデュース
- 消費者に配送するキュー
- コンシューマーが ack し、ack までそれ以上のタスクを受け取らない
- キューはメッセージ処理が完了したと見なします
つまり、問題は ack が 2 つのことを組み合わせていることです。「私はもっと多くの仕事を受け入れることができます」ということと、「この仕事は終わった」ということです。問題は!私のコンシューマ マシンは、50 のタスクを並行して処理するようにプロファイルされており、各タスクには最大約 30 秒かかります。ただし、1 つのタスクが停止または失敗した場合は、再配信する必要があります。これを達成する方法は?