Уникальные сообщения в очереди в AMQP? - PullRequest
7 голосов
/ 29 октября 2009

Это похоже на этот другой вопрос , но с небольшим поворотом: я прочитал в спецификации, что идентификатор сообщения для сообщений AMQP должен быть установлен самим приложением, поэтому теоретически я могиспользуйте это, чтобы гарантировать определенную степень уникальности, верно?

Мой главный вопрос сейчас: в каком объеме этот идентификатор сообщения должен быть уникальным?Для сообщений в настоящее время в очереди в определенной очереди?По всем очередям?Над вселенной?: -)

И стандартизировано ли это поведение?Я планирую использовать RabbitMQ здесь, но было бы неплохо иметь что-то не указанное поставщиком: -)

Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 июля 2015

Другое предложение касается отвалов - умных конечных точек школы мысли.

Вы можете обрабатывать уникальность в вашем приложении, используя какое-то общее состояние.

У нас была такая же проблема при переключении с Gearman на RabbitMQ. Мы используем memcached для отслеживания уникальных идентификаторов сообщений, опубликованных, и потребители отбрасывают сообщения, для которых идентификатор сообщений уже сохранен в memcache (дубликаты). Вы также можете проверить memcache перед тем, как поместить его в очередь.

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

1 голос
/ 17 июля 2013

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

...