2016-08-19 7 views
2

Я пытаюсь настроить сценарий, когда слушатели будут вручную отправлять ACK в RabbitMQ. У меня есть это в моей заявке.propertiesManual ack with Spring Cloud Stream RabbitMQ

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

Как отправить подтверждение от слушателя? Я вижу от Manual Acknowledgement of Messages : Spring Cloud Stream Kafka, что для Kafka мы создаем объект подтверждения и вызываем его(). Есть ли пример для RabbitMQ, чтобы сделать то же самое?

ответ

2

См. Spring Integration Reference Manual. Сообщение имеет два заголовка: AmqpHeaders.CHANNEL и AmqpHeaders.DELIVERY_TAG.

Вам необходимо позвонить по телефону basicAck, перейдя по ссылке.

0
@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, поэтому вы можете использовать их из коробки с настройками.

Смежные вопросы