手动确认Spring Cloud Stream RabbitMQ

时间:2016-08-19 22:04:34

标签: rabbitmq spring-cloud-stream

我正在尝试设置一个场景,其中侦听器将手动向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 个答案:

答案 0 :(得分:3)

请参阅Spring Integration Reference Manual。该邮件包含两个标头 _, err := d.Conn.Do("RPUSH", "objects", network.Bytes()) AmqpHeaders.CHANNEL

您需要在频道上呼叫AmqpHeaders.DELIVERY_TAG,并传递投递代码。

答案 1 :(得分: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以自动方式添加标题,因此您可以在设置中使用它们。