首页 文章

手动确认Spring Cloud Stream RabbitMQ

提问于
浏览
3

我正在尝试设置一个场景,其中侦听器将手动向RabbitMQ发送ACK . 我在我的application.properties中有这个

spring.cloud.stream.rabbit.bindings.input.consumer.acknowledge-mode=MANUAL

如何从听众发送确认?我从Manual Acknowledgement of Messages : Spring Cloud Stream Kafka看到,对于Kafka,我们创建一个Acknowledgment对象并在其中调用acknowledge() . RabbitMQ有同样的例子吗?

2 回答

  • 1
    @StreamListener(target = BAR)
    public void handlerMethod(@Payload Foo foo,
                              @Header(AmqpHeaders.CHANNEL) Channel channel,
                              @Header(AmqpHeaders.DELIVERY_TAG) Long deliveryTag) {
        ...
        channel.basickAck(deliveryTag, false);
    }
    

    RabbitMQ以自动方式添加 Headers ,因此您可以在设置中使用它们 .

  • 3

    Spring Integration Reference Manual . 该消息有两个 Headers , AmqpHeaders.CHANNELAmqpHeaders.DELIVERY_TAG .

    您需要在通道上调用 basicAck ,并传递传递标记 .

相关问题