Я попробовал несколько способов управления подтверждением вручную с помощью RabbitMQ, особенно на основе этого предыдущего сообщения, но, к сожалению, ни один из них не работает.
В моем файле конфигурации я установил режим подтверждения в РУЧНОЙ следующим образом:
spring:
cloud:
stream:
bindings:
magento-consumer:
binder: rabbit
destination: toto
durableSubscription: false
consumer:
acknowledge-mode: MANUAL
Затем у меня есть метод receive
с аннотацией @StreamListener
, который принимает 4 параметра:
@StreamListener(SinkInterface.NAME)
public void receive(
Message<Event> m,
@Header(name = Queue.TO_MAGENTO , required = false) Boolean header,
@Header(AmqpHeaders.CHANNEL) Channel channel,
@Header(AmqpHeaders.DELIVERY_TAG) Long deliveryTag
) {
//Do something
}
Проблема в том, что параметр channel
всегда равен нулю, поэтому я не могу получить заголовок amqp_channel
.
org.springframework.messaging.MessageHandlingException: отсутствует заголовок «amqp_channel» для типа параметра метода [интерфейс com.rabbitmq.client.Channel]
Как я могу получить этот параметр канала? Я не понимаю, почему amqp_channel
не ставится, и как его залить.
Я что-то пропустил ?