前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rabbitmq 怎么保证消息的稳定性

rabbitmq 怎么保证消息的稳定性

作者头像
程序狗
修改2021-09-08 17:24:37
5790
修改2021-09-08 17:24:37
举报
文章被收录于专栏:大数据知识大数据知识

1.保证消息不会丢失

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

第一种:消息持久化

RabbitMQ的消息是默认放在内存的,如果不特别声明消息持久到磁盘,当节点关掉或者crash(碰撞)掉,消息就会丢失。

那么要把数据持久到磁盘就要满足三个条件,缺一不可

:Exchange(互换) 设置持久化

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

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

第二种:ACK确认机制

就是多个消费者收到消息,收到一半就没了,消费者就死掉了;

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

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

RabbitMQ三种部署模式:

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

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

镜像模式:把队列做成镜像需要的队列,存放于多个节点,

属于RabbitMQ的HA方案;

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

第四种:消息补偿机制

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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档