【发布时间】:2020-03-13 02:27:54
【问题描述】:
我已经浏览了 rabbitmq 文档, https://www.rabbitmq.com/confirms.html#publisher-confirms
使用标准的 AMQP 0-9-1,唯一保证一条消息 不会丢失是通过使用事务——使通道具有事务性 然后为每条消息或一组消息发布、提交。 在这 在这种情况下,交易是不必要的重量级和减少 吞吐量增加了 250 倍。为了解决这个问题,确认 引入了机制。它模仿了消费者的确认 协议中已经存在的机制。
为了启用确认,客户端发送confirm.select 方法。 根据是否设置了无等待,代理可能会响应 带有确认.select-ok。一旦 confirm.select 方法用于 频道,据说处于确认模式。交易渠道 无法进入确认模式,一旦通道处于确认模式, 它不能进行事务处理。
目前我正在使用 spring-rabbit 库的 RabbitTemplate.convertAndSend 发送消息。 我正在使用事务通道将消息发布到rabbitmq,根据文档它的速度较慢,我可以通过使用发布者确认来提高吞吐量。
但我不是很清楚。
如果我想启用确认,那么需要进行哪些更改以及如何处理异常? 我的重审机制是什么? 此发布者是否确认以异步方式工作? 事务是否同步工作?
非常感谢任何建议。
【问题讨论】: