Я планирую использовать Spring Cloud Stream для своего проекта. Можно ли использовать подтверждения издателя (также известные как «Благодарности издателя»), то есть регистрировать обратный вызов подтверждения, как описано в http://docs.spring.io/spring-amqp/reference/html/_reference.html#cf-pub-conf-ret? Или есть другие возможности получить подтверждение от RabbitMQ о том, что он получил сообщение от клиента?
Spring Cloud Stream + Подтверждение издателя RabbitMQ
Ответы (2)
Нет; это не поддерживается. Однако вы можете установить флаг transactional
для производителя, который вызовет исключение, если отправка не удалась.
Хотя подтверждения издателя обычно намного «быстрее», чем транзакции, это действительно только в том случае, когда вы отправляете кучу сообщений и ждете их подтверждения позже.
Поскольку мы здесь в потоке; вы отправляете одно сообщение и ждете подтверждения. Это не будет значительно быстрее, чем просто использование транзакции.
Если вы хотите использовать подтверждения; вам придется использовать адаптер исходящего канала RabbitTemplate
или Spring Integration напрямую, а не связыватель.
person
Gary Russell
schedule
05.04.2017
Вы можете объяснить, как установить флаг
transactional
на производителе. Я нашел только потребительское свойство transacted
в разделе 13.3.2 RabbitMQ Consumer Properties в ссылка.
- person MKremser; 06.04.2017
Его не было в документации; он находится в документах SR3 - эта ссылка устарела и требует исправления.
- person Gary Russell; 06.04.2017
есть ли поддержка для этого?
- person Jerald Baker; 15.04.2020
Я вижу, что сейчас это поддерживается.
См. Свойство confirmAckChannel
person
Jerald Baker
schedule
15.04.2020