赞
踩
作者 | 黄永灿
后端开发攻城狮,关注服务端技术与性能优化。
在讨论 RabbitMQ 的消息可靠性之前,我们先来回顾一下消息在 RabbitMQ 中是怎么流转的。
消息生产端将消息发送给 Exchange
Exchange 根据 RoutingKey 把消息路由至具体 Queue
消息消费端监听 Queue 并消费消息
那么,这几个步骤有哪些地方可能会掉链子导致消息丢失呢?
- try {
- // 开启事务 channel.txSelect(); // 发送消息 channel.basicPublish(exchange, routingKey, props, body); // 事务提交 channel.txCommit();} catch(Exception e) {
- // 事务回滚 channel.txRollback(); e.printStackTrace();}
开启 Confirm 机制后,所有在该信道上面发布的消息都会被指派一个唯一的ID(从 1 开始),一旦消息被投递到所有匹配的队列之后&#PS:事务机制和 Confirm 机制是互斥的,两者不能共存,会导致 RabbitMQ 报错。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。