Spring AMQP: RabbitMQ Delayed Exchange Message: `amqp_delay` не переведен в` x-delay` - PullRequest
0 голосов
/ 13 мая 2019

У меня есть обмен RabbitMQ типа x-delayed-message с использованием плагина отложенного обмена сообщениями.

Я знаю, что когда я возвращаю org.springframework.messaging.Message с установленным заголовком AmqpHeaders.DELAY, функция задержки работает.Я бы предположил, что в какой-то момент инфраструктура переводит amqp_delay (значение AmqpHeaders.DELAY) в x-delay.

Но когда я повторяю org.springframework.amqp.core.Message, сообщение просто получает отправляется с заголовком amqp_delay вместо заголовка x-delay, которого ожидает RabbitMQ.

Это упущение со стороны Spring AMQP?

Учитывая, что класс AmqpHeaders находится в артефакте spring-amqp ив соответствии с org.springframework.amqp.support, не должно ли значение AmqpHeaders.DELAY быть x-delay вместо amqp_delay.

Если нет, то должна ли среда по крайней мере переводить ключи заголовка?

Или я что-то здесь упускаю?

1 Ответ

2 голосов
/ 13 мая 2019

Такое преобразование выполняется в SimpleAmqpHeaderMapper:

.acceptIfNotNull(getHeaderIfAvailable(headers, AmqpHeaders.DELAY, Integer.class),
                amqpMessageProperties::setDelay)

, который используется из MessagingMessageConverter.И этот используется в RabbitMessagingTemplate.

поэтому, если вы создаете org.springframework.amqp.core.Message самостоятельно, вам действительно нужно заполнить заголовок x-delay.AmqpHeaders используется только в случае org.springframework.messaging.Message.

...