2017-05-04 89 views
1

我嘗試了幾種方法來管理RabbitMQ的手動確認,特別是基於this previous post,但不幸的是,它們都不起作用。如何使用Spring Cloud Stream Rabbit管理手動確認?

在我的配置文件,我已經設置了確認模式到手動如下:

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沒有設置,以及如何注入它。

我錯過了什麼嗎?

回答

2

我看到屬性名稱需要更正。設置確認模式的正確屬性名稱是:spring.cloud.stream.rabbit.bindings.<channelName>.consumer. acknowledge-mode。您可以檢查here瞭解更多信息。

+0

我的不好,我沒注意'兔'字段...... –

相關問題