rabbitmq 怎么保证消息的稳定性

1.保证消息不会丢失

消息持久化;ACK确认机制;设置集群镜像模式;消息补偿机制

第一种:消息持久化

RabbitMQ的消息是默认放在内存的,如果不特别声明消息持久到磁盘,当节点关掉或者crash(碰撞)掉,消息就会丢失。
那么要把数据持久到磁盘就要满足三个条件,缺一不可

Exchange(互换) 设置持久化

Queue(队列)() 设置持久化

Message(信息)持久化发送:发送消息设置发送模式deliveryMode=2,代表持久化消息

第二种:ACK确认机制

就是多个消费者收到消息,收到一半就没了,消费者就死掉了;
这个使用就要使用Message acknowledgment 机制,就是消费端消费完成要通知服务端,服务端才把消息从内存删除,一个消费者出了问题,没有同步消息给服务端,还有其他的消费端去消费,保证了消息不丢的case

第三种:设置集群镜像模式

RabbitMQ三种部署模式:

单点模式:最简单的模式,非集群模式,节点挂了,消息不可用了,业务瘫痪,只能等待;

普通模式:必须消息是持久的,默认是集群模式,某个节点挂了,消息不可用了,业务瘫痪了,此时只能等待节点恢复重启使用;

镜像模式:把队列做成镜像需要的队列,存放于多个节点,
属于RabbitMQ的HA方案;

队列的内容仅仅只存在于某一个节点,并不在所有的节点,节点只会仅仅存放数据结构和元数据。

第四种:消息补偿机制

消息补偿机制需要建立在消息要写入DB日志,发送日志,接受日志,两者的状态必须记录,然后根据DB日志记录check 消息发送消费是否成功,不成功,进行消息补偿措施,重新发送消息处理。

了解更多java课程相关技术知识欢迎关注小编!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值