多数のメッセージを処理する必要があるという要件があります。これらのメッセージは、別のプロセスによって DB テーブルに挿入されます。私がしなければならないのは、DB で新しいメッセージをチェックし、構成に応じて対応する顧客に電子メールまたは http で送信することだけです。メッセージの数は常に数千に達する可能性があり、顧客の数は約 1000 です。
生産者と消費者が機能する方法でこれを設計する予定です。プロデューサー スレッドが DB をポーリングして新しいメッセージを探し、それらを Queue に入れるように、ワーカー スレッドがこれらのメッセージとプロセスを読み取ります。
最初は、JMS がこの要件に適したソリューションであるように見えました。ただし、次のシナリオを考えると、この要件に適した Threadpool を使用して、ExecutorService のような代替手段があるかどうかを探しています。
- 1 つのメッセージ配信が失敗した場合、少なくとも 24 時間は何度か再試行する必要があります。
- 顧客に対して 1 つのメッセージ配信が失敗した場合、他のメッセージ配信もすべて失敗する可能性があります。したがって、その顧客への次のメッセージを処理する前に、最初のメッセージを送信する必要があります。
つまり、すべての顧客のすべてのメッセージに対して 1 つのキューがある場合、1 つのメッセージが失敗すると、他のメッセージは処理されません。
これをどのように処理するのが最善かについて誰かが提案してもらえますか?
前もって感謝します。