Spring Cloud Stream + Подтверждение издателя RabbitMQ

Я планирую использовать Spring Cloud Stream для своего проекта. Можно ли использовать подтверждения издателя (также известные как «Благодарности издателя»), то есть регистрировать обратный вызов подтверждения, как описано в http://docs.spring.io/spring-amqp/reference/html/_reference.html#cf-pub-conf-ret? Или есть другие возможности получить подтверждение от RabbitMQ о том, что он получил сообщение от клиента?


person MKremser    schedule 05.04.2017    source источник


Ответы (2)


Нет; это не поддерживается. Однако вы можете установить флаг transactional для производителя, который вызовет исключение, если отправка не удалась.

Хотя подтверждения издателя обычно намного «быстрее», чем транзакции, это действительно только в том случае, когда вы отправляете кучу сообщений и ждете их подтверждения позже.

Поскольку мы здесь в потоке; вы отправляете одно сообщение и ждете подтверждения. Это не будет значительно быстрее, чем просто использование транзакции.

Если вы хотите использовать подтверждения; вам придется использовать адаптер исходящего канала RabbitTemplate или Spring Integration напрямую, а не связыватель.

person Gary Russell    schedule 05.04.2017
comment
Вы можете объяснить, как установить флаг transactional на производителе. Я нашел только потребительское свойство transacted в разделе 13.3.2 RabbitMQ Consumer Properties в ссылка. - person MKremser; 06.04.2017
comment
Его не было в документации; он находится в документах SR3 - эта ссылка устарела и требует исправления. - person Gary Russell; 06.04.2017
comment
есть ли поддержка для этого? - person Jerald Baker; 15.04.2020

Я вижу, что сейчас это поддерживается.

https://cloud.spring.io/spring-cloud-static/spring-cloud-stream-binder-rabbit/3.0.3.RELEASE/reference/html/spring-cloud-stream-binder-rabbit.html#rabbit-prod-props.

См. Свойство confirmAckChannel

person Jerald Baker    schedule 15.04.2020