我正在尝试设置一个场景,其中侦听器将手动向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做同样的例子?
答案 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以自动方式添加标题,因此您可以在设置中使用它们。