Весенний AMQP. Обмен письмами. Отправить сообщение в исходную очередь

В моей системе я использую Тематические Обмены с большим количеством очередей потребителей. Каждая очередь имеет собственный неуникальный ключ маршрутизации (например, "add. #" Для всех новых объектов или просто "#" для использования всех событий).

Я хочу добавить поддержку для повторения неудачных сообщений с некоторой задержкой. Самая большая проблема, которую я вижу с подходом Dead Letter Exchange, - это отправка сообщения непосредственно в очередь, в которой оно не удалось. Ключи маршрутизации для очередей не являются уникальными, и даже если я повторно отправлю сообщение на Exchange с исходным ключом маршрутизации, оно будет использовано другими очередями.

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

Мне пришла в голову идея иметь фильтр, который будет проверять заголовок 'x-death', получать первую очередь (очередь, в которой произошла ошибка), и обрабатывать сообщение только для соответствующей очереди. В противном случае - подтвердите сообщение.

Возможно ли реализовать это поведение с помощью Spring AMQP? Я смотрю в MessagePostProcessor, но как подтвердить сообщение от него?

1 ответ

Решение

Если вы действительно беспокоитесь только о целевой очереди, то вам нужно рассмотреть вариант с повторной публикацией в default exchange который имеет эти способности:

Обмен по умолчанию неявно связан с каждой очередью, причем ключ маршрутизации равен имени очереди. Невозможно явно связать или отменить привязку из обмена по умолчанию. Это также не может быть удалено.

Обратите внимание на routing key equal to the queue name часть. Я хотел бы рассмотреть для решения AmqpHeaders.CONSUMER_QUEUE и использовать его значение в качестве ключа маршрутизации для повторной публикации в обмен по умолчанию ("") во время повторного процесса.

Другие вопросы по тегам