当前位置:   article > 正文

rabbitmq 怎么保证消息的稳定性_rabbitmq如何保证消息的稳定性

rabbitmq如何保证消息的稳定性

1.保证消息不会丢失

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

第一种:消息持久化

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

Exchange(互换) 设置持久化

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

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

第二种:ACK确认机制

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

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

RabbitMQ三种部署模式:

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

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

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

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

第四种:消息补偿机制

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/513164
推荐阅读
相关标签
  

闽ICP备14008679号