REST API の特定のエンドポイントが呼び出されるたびに、時間がかかり、エラーが発生しやすいタスク (たとえば、SMS の配信をトリガーする SOAP エンドポイントの呼び出し) を処理する必要がありますが、ユーザーを作成したくありません。応答を返す前にそれを待ちます。Spring AMQP は既に私のスタックの一部であるため、それを利用して「ワーク キュー」を確立し、キューから多くのワーカー プロセスを消費して「ワーク ユニット」を処理することを考えました。ただし、次の要件があります。
- 作業単位は配信されることが保証され、厳密に 1 人のワーカーに配信されます。
- なんらかの理由でワークユニットが完了できなかった場合、別のワーカーが後でそれを取得できるように、キューに戻す必要があります。
- 作業単位は、サーバーの再起動やクラッシュに耐えます。それらを保存するためにいかなる種類のDBも使用しないため、これは必須です。
これら 3 つの要件を満たすように RabbitMQ と Spring AMQP を構成できることは知っていますが、RPC を実現するためにしか使用したことがないため、それ以外のことはあまり知りません。私が従うかもしれない例はありますか?注意すべき落とし穴にはどのようなものがありますか?