生产者发送消息到MQ的时候可能会出问题,比如网络不好无法保证MQ收到消息,对于此RabbitMQ有两种方法可以解决。
第一种是事务机制
RabbitMQ 事务
(摘自《RabbitMQ实战》)
这种方式交互比较多,性能不好,不建议采用。
第二种是发送发确认机制
RabbitMQ 发送确认
(摘自《RabbitMQ实战》)
发送确认的方式有三种:
1、同步确认,即发送一条确认一条,性能仍然不行,和事务差不多
2、批量确认,发送一批,确认一次,交互少,性能好,但如果确认失败,则需要把一批消息重新发送。
3、异步确认,一直发不必等待,MQ发送成功后回调客户端,性能好,吞吐量大,最佳方式。
四种方式的QPS对比图(摘自《RabbitMQ实战》)