0

クラスタ化されていない Tomcat サーバーのグループでアプリケーションを実行しています。restlet Web サービスを提供します。安らかなパラダイムに従って、各呼び出しはステートレスです。

この環境では、アプリケーションが定期的にデータベースの状態変化を確認し、アクションを実行するようにしたいと考えています。アクションの 1 つは電子メールを送信することであるため、レビュー期間ごとに特定のレコードのステータスを複数回チェックしないようにしたいと考えています。

メッセージがこの状況に役立つことは知っていますが、正確な方法はわかりません。定期的なイベントは、アプリケーションのインスタンスごとに生成できます。メッセージ キュー内の同様のメッセージをデバウンスする方法はありますか? この問題に最適なツールはどれですか?

4

1 に答える 1

0

メッセージ キューを介してレコード 'id' をフィードできるはずです。アプリがキューをリッスンしている場合、各メッセージはいずれかのサーバーによって取得され、そのサーバーはその ID をチェックできます。問題は、最初のメッセージの生成です。確認するレコードを照会し、メッセージをキューに入れるフィーダー プロセスが必要です。

もちろん、それを行っている場合は、IDまたは複数のIDでレスレットにPOSTして、それらをそのように機能させることができます。非同期ではありませんが、ノード間で負荷を分割しようとしているだけであれば、非同期である必要はありません。ノードの前にロード バランサーがある場合は、レビュー リクエストをロード バランサーに POST するだけで、サーバー間でリクエストが分散されます。

特定のレコード ID を使用できない場合は、データを分割する自然な方法を選択し、ID をプッシュしているかのようにそのパーティション キーをプッシュします。データセットのサイズに応じて、「市/州」、「名前の最初の 2 文字」、「地域」など、データセットを扱いやすい小さなチャンクに分割するものをプッシュできます。

于 2010-11-07T04:56:44.270 に答える