Задать вопрос
@grulex

Как избавиться от дублирующихся сообщений в очереди RabbitMq?

Добрый день.
Есть два сервиса. Необходимо, чтобы один сервис при изменении какой-то сущности сообщал об этом другому сервису.
Сейчас обмен происходит с помощью сложных велосипедов и хранением очереди в MySql. Планируется делать это с помощью RabbitMQ, но есть некоторые проблемы.

Первый сервис меняет данные довольно часто (может быть десятки раз в минуту), а второй сервис получает эти данные с периодичность в 2 минуты.
Если класть каждое изменение сущности в очередь RabbitMQ, то при обработке очереди вторым сервисом один и тот же элемент будет обрабатываться многократно.

Как можно реализовать уникальность на момент начала обработки очереди?
Читать всю очередь и циклами группировать элементы - затратно и как-то костыльно.
Если читать по одному элементу, обрабатывать, и при чтении следующего проверять, был ли он обработан, и если был, просто помечать прочитанным, могут потеряться данные, когда мы обработали первый элемент, а уже после этого произошло обновление.

Существует ли в RabbitMQ какой-то механизм, решающий эту проблему?
Если есть какие-то другие предложения без написания своих велосипедов, тоже интересно было бы услышать.
  • Вопрос задан
  • 487 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
qonand
@qonand
Software Engineer
Rabbit не позволяет заменять одно сообщение другим или каким-то другим образом произвести редактирование сообщение. Единственный вариант это фильтровать сообщения на уровне consumer
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы