1

現在、RabbitMQ を評価しています。従来の DB ストア アンド グラブの代わりに、いくつかのプロセスをメッセージング アプリとして実装する最善の方法を決定しようとしています。これがシナリオです。同様のタスクを実行するユーザーの部門があります。ユーザーがサーバー アプリケーションに作業を送信するときに、サーバー アプリが、作業を送信したユーザーだけでなく、すべてのユーザーに対して、何が行われたかを示すメッセージを通知ウィンドウに送り返すようにします。これはすべて簡単です。

問題は、これらのメッセージを Queue でたとえば 4 時間存続させたいということです。新しいユーザーがログインするかスーパーバイザーと言うと、過去 4 時間のすべてのメッセージが通知ウィンドウに配信されます。これにより、「ジョンと話したことがありますか?」、「旅程について彼にメールしましたか?」などと他の人に尋ねることなく、最近何が起こったのか、何が起こっているのかを簡単に確認できます。

では、公開されてから x 時間の有効期間を持つメッセージを公開し、接続する新しいコンシューマーがこれらすべてのメッセージを時系列で配信されるようにするにはどうすればよいでしょうか? また、メッセージがキューから期限切れになった後、メッセージが消えてしまうことが望ましいです。

ありがとう

4

3 に答える 3

2

RabbitMQ には、 Per-Queue Message TTLPer-Message TTLがあります。私が正しければ、あなたの仕事にそれらを利用することができます。

于 2013-10-14T21:13:17.493 に答える
0

上記の回答に加えて、アプリケーション/クライアントがメッセージを 2 つのキューに発行する方がよいでしょう。コンシューマーはキューの 1 つから消費しますが、もう一方のキューは、キュー メッセージごとの TTL またはメッセージごとの TTL を使用してメッセージを保持するように構成できます。

于 2015-09-20T17:29:49.683 に答える
0

あるポイントから別の信頼できるポイントにメッセージを取得するために行うメッセージのキューイング。したがって、送信者は受信者から独立して作業できます。あなたが提案するのは、一時的な永続ストアを使用することです。

SQL データベースは完全に適合しますが、mongodb もうまく機能します。ドキュメントをmongoにドロップし、ttlを指定して、データベースに有効期限を処理させます。

http://docs.mongodb.org/master/tutorial/expire-data/

于 2015-09-20T17:36:45.190 に答える