Сохранение порядка доставки - PullRequest
1 голос
/ 15 сентября 2011

Я рассматриваю возможность использования AMQP для приложения, где заказ доставки имеет первостепенное значение

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

Похоже, я должен оставить сообщение в очереди до его обработки, а затем удалить его. Тогда возможно, что одно и то же сообщение обрабатывается дважды по порядку, но это легко отследить и обработать.

Однако я не вижу, как это сделать. То, что я ищу, это какие-то методы просмотра и удаления сообщений, дающие мне прямой контроль, но их, похоже, не существует.

Я что-то упускаю или пытаюсь решить проблему неправильно?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Я решал ту же проблему.В моих решениях я упаковывал сообщения в одно одно сообщение , где внешнее сообщение было обработано первым и затем У меня обработано оставшихся внутренних сообщений в упакованном порядке.У этого есть некоторые недостатки, например, большие сообщения (если ваша иерархия упаковки содержит много сообщений), более сложная сериализация, ... но для меня решение было достаточно подходящим.

0 голосов
/ 15 сентября 2011

Вы не можете просматривать и удалять в AMQP.На самом деле, вы не можете просматривать сообщения в очереди, не потребляя их, и Rabbit не предоставляет никакого расширения, чтобы включить это.

Общий ответ на вашу проблему: «Подумайте очень внимательно, если вам действительно нужно это ограничение по порядку»", потому что, например, с этим ограничением вы не можете иметь несколько потребителей в очереди.

...