MassTransit с RabbitMQ: дедупликация сообщений - PullRequest
0 голосов
/ 31 мая 2018

Я использую MassTransit с RabbitMQ на транспортном уровне и столкнулся с необходимостью дедупликации сообщений.

Добавление нового сообщения в очередь следует пропустить, если дублированное сообщение уже поставлено в очередь (даже если это сообщениеобрабатывается потребителем).Дубликаты могут быть идентифицированы, например, по содержанию сообщения.

Отправка DoWork1, DoWork2, DoWork3 может обрабатываться параллельно, но отправка DoWork1, DoWork2, DoWork2 - дубликаты должны быть пропущены, и до DoWork1, DoWork2 могут обрабатываться одни и те же сообщения.поставлен в очередь и не должен восприниматься как дубликаты.

Решение 1: использовать " Плагин дедупликации сообщений RabbitMQ " на уровне обмена, идеально подходит для меня, но не уверен, что решает описанную проблему.

Решение 2: внедрить пользовательское промежуточное ПО со сторонним хранилищем данных.

Есть ли лучшее решение для описанной проблемы?

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 20 июня 2018

Плагин дедупликации RabbitMQ был разработан для этой цели.

Вы можете удалить дубликаты на бирже или в очереди.Основное различие заключается в том, что обмен удаляет дубликаты сообщения, если оно уже видело его ранее, в то время как очередь удаляет дубликаты сообщения, если оно уже содержит его копию.

При публикации сообщения просто установите заголовок x-deduplication-headerсо строкой, которая однозначно идентифицирует сообщение (например, хеш MD5 его тела).

Использование специального промежуточного программного обеспечения предоставит вам больше свободы действий за счет собственной разработки.

...