@grulex

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы