热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

如何保证消息队列的高可用与重复消费

知了堂姐
2024-07-08 17:22:16
0

如何保证消息队列的高可用



可用采用集群来保证高可用,以 RabbitMQ 为例,推荐采用镜像集群,普通集群如果磁盘节点挂了就 GG

了,还是无法保证高可用,镜像集群的配置要用到 HAProxy,需要在后台管理页面中设置策略,将

ha-mode 设置为 all,表明每个节点上都存放镜像...限于篇幅,具体的集群配置我后面会专门写一篇博

客总结.

1.如何保证消息不被重复消费(幂等性问题)

rabbitmq 并没有提供防止消息重复消费的功能,只能在业务端去实现,如果业务是做了集群的,我们可

以用 redis 帮助解决,具体做法是将消息的 msgid 和消费状态用 redis 存储起来,每次消费前先查看一下

本次消费的消息状态,如果已经被消费过了,就可以不用消费.如果尚未消费,就可以进行消费,消费完把

对应的状态改为已消费即可.

2.如何保证消息的消费顺序?

以 rabbitmq 为例,消息 1 和消息 2 需要按顺序消费,必须先消费消息 1,后消费消息 2,我们可以将消息

放顺序到不同的 queue 里,然后由 worker 来消费.

3.如何解决消息队列的延时及过期失效问题?

批量重导,自己写程序把失效的数据查出来然后重新导入队里中.

4.消息队列满了怎么处理?当消息过度积压怎么处理?

应当在设计上尽量避免出现这种问题,如果确实已经碰到了,可以采取服务降级策略,同时临时增加一些消费能力更强劲的消费者,以 X 倍速率消费队列中积压的消息.

预约申请试听课
大家都在看

0基础学Java,必看的Java技术学习方法

2024-07-08 浏览次数:0

代码审计工程师是什么行业?细看代码审计工程师岗位...

2024-07-08 浏览次数:0

转行学前端好找工作吗?不是计算机专业能学前端吗?

2024-07-08 浏览次数:0

10个很酷的CMD命令,命令窗口命令大全

2024-07-08 浏览次数:0

灵魂拷问:做程序员,你真的准备好了吗?

2024-07-08 浏览次数:0

【科普】为什么需要信息安全?怎么保证信息安全?

2024-07-08 浏览次数:0
最新资讯