热门课程

免费试听

上课方式

开班时间

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

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

知了堂姐
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 倍速率消费队列中积压的消息.

大家都在看

在这个春,我们参加第二课堂来学习

2024-07-08 浏览次数:0

网络安全被卡学历?人才已经饱和了?

2024-07-08 浏览次数:0

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

2024-07-08 浏览次数:0

知了堂受邀参加西师大第十一届实习工作会

2024-07-08 浏览次数:0

2021年全新Java学习路线图有吗?

2024-07-08 浏览次数:0

数据库管理系统典型架构

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