У меня есть сценарий в моей настройке RabbitMQ, что мне интересно, как решить. Ниже схема иллюстрирует его (обмены и большинство очередей удалены для краткости):Message Ordering Over Queues
Сценарий
- Производитель создает сообщение А (1), его получения верхнего потребителя, который начинает обработку сообщения.
- Производитель создает сообщение A (2), оно принимается нижним потребителем (при условии, что оба потребителя находятся на бирже с циклическим переключением).
- Нижний потребитель публикует сообщение B (2), которое помещается в очередь потребителя B
- Бедный медленный потребитель верхнего уровня окончательно заканчивает и испускает свое сообщение B (1).
Проблема
Если мы предположим, что B потребитель не может быть идемпотент, как мы обеспечиваем результат обоих сообщений B применяются в правильном порядке?
Я подумал о том, чтобы использовать временную метку, применяемую к первоначальной публикации сообщения A, и чтобы потребитель сохранял временную метку последнего изменения, отклоняя любые временные метки до этого времени, но это работает только в том случае, если каждое сообщение вызывает точный такого же изменения и требует много отслеживания.
Другие идеи относительно того, как подойти к этому, будут оценены. Благодаря!
Ваш вопрос, кажется, связанные с [RabbitMQ засаде несколько очередей, чтобы закончить] (http://stackoverflow.com/questions/13861459/rabbitmq-wait-for-multiple-queues-to-finish) –