2017-02-11 13 views
1

私はRabbitMQを使用してユーザーに通知を送信しています。ユーザーはいつでも自分のキューを読むことができます。RabbitMQ - 出版社側で重複メッセージを避ける

私が直面している問題は、キューが夜間に多くの通知で満たされ、ユーザーが朝に戻ったときに、これらのメッセージを順番に処理する必要があることです。これらの通知の多くは重複しています。

私は出版社側でこれを改善することが理にかなっていると思います。つまり、新しい通知を追加する前に、すでにキューに保留中の通知があるかどうかを調べます。この場合、実際に新しい通知である場合にのみ新しい通知をキューに入れ、重複を回避します。

通知を組み合わせることでさらに拡張することもできます。単純に新しい通知をキューに入れるのではなく、これらの通知と新しい通知の合計を保持する新しい通知でキューからの現在の通知を置き換えることができます内部通知の配列の例)。

これはAMQP/RabbitMQで可能ですか?

答えて

3

いいえ、既定では、既存のメッセージを置き換えることはできません。

+0

フィードバックありがとうございます。しかし私のシナリオを解決/改善するために何ができるでしょうか?基本的には、キューが「過負荷」であるシナリオを解決しようとしています。これは、消費者がしばらく読んでいない(たとえば、夜間に消費者がオフラインになっている)ためです。私は、これらのメッセージがキュー内のメッセージの重複であることを知らずに、消費者が各メッセージを処理しなければならないことを避けたい。 –

+0

あなたは 'TTL'拡張を使い、X秒より古いメッセージを削除することができます。https://www.rabbitmq.com/ttl.html メッセージの重複はアプリケーション側からです!あなたがそれらを避けたい場合は、あなたが送信しているメッセージをトレースする必要があります。 – Gabriele

関連する問題