【发布时间】:2017-10-02 09:25:34
【问题描述】:
我尝试了几种使用 RabbitMQ 管理手动确认的方法,尤其是基于 this previous post,但不幸的是,它们都不起作用。
在我的配置文件中,我将确认模式设置为手动,如下所示:
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:方法参数类型[接口 com.rabbitmq.client.Channel] 缺少标头“amqp_channel”
如何检索此通道参数?
我不明白为什么没有设置amqp_channel,以及如何注入它。
我错过了什么吗?
【问题讨论】:
标签: rabbitmq spring-cloud spring-cloud-stream