rabbitmq模式:
1.简单模式 队列中一对一消费
2.工作模式 队列中一对多消费 且一条消息只能被一个消费者消费
3.广播模式 使用fanout交换机 凡绑定该交换机的队列都能接收到该消息
4.路由模式 使用direct交换机 根据路由键匹配 发送消息到指定队列
5.主题模式 使用topic交换机 根据通配符匹配 *代表一个关键字 #代表一个或者多个关键字
rabbitmq如何防止消息丢失
消息丢失主要有四种情况 生产者到交换机、交换机到队列、队列到消费者及rabbitmq宕机
1.生产者到交换机之间发生丢失
根据confirmCallBack 方法 ack判断如果为false 则代表交换机没有接收到该消息 为true则正常
解决方案:手动处理或者重新发送或者保存数据库定时同步
2.交换机到队列之间发生丢失
根据returnsCallback 若调用了该方法则代表队列没有接收到该消息
解决方案:手动处理或者重新发送或者保存数据库定时同步
3.队列到消费者之间发生丢失
打开消费者手动确认机制 根据业务处理返回不同的ack
ack 代表业务处理正常 队列删除该消息
nack 代表业务处理异常 可以传参数 false丢弃消息 true 代表放回队列 可批量操作
reject 代表业务处理异常 可以传参数 false丢弃消息 true代表放回队列 只能单个操作
4.rabbitmq宕机
解决方案:消息持久化