RabbitMQ消息丢失的场景以及解决办法
1. 生产者生产信息发送到RabbitMQ Server消息丢失场景
-
外界原因:网络问题等原因RabbitMQ Server端收不到消息
-
代码层面,配置层面,考虑不全导致消息丢失
-
解决方案:就是AMQP协议提供的事务机制:
RabbitMQ客户端中Channel接口提供了几个事务相关的方法:
channel.txSelect
channel.txcommit
channel.txRollback
在生产者发送数据到RabbitMQ Server之前开启RabbitMQ事务channel.txSelect,然后发送消息;如果消息没有成功发送到RabbitMQ中,返回给生产者会收到异常报错,此时就可以回滚事务channel.txRollback,然后重新发送消息;如果发送消息成功,提交事务channel.txcommit//开启事务 channel.txSelecttry{ //这里发送消息 }catch(Exception e