阿里云-- RocketMQ Message Priority 优先级解读

消息队列中消息有不同优先级,优先级高的先投递。RocketMQ因消息持久化,按优先级排序开销大,未特意支持消息优先级,但可通过单独配置高低优先级队列实现类似功能。优先级问题可分为两类,分别有不同解决办法,同时要考虑业务对优先级精确性的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上下文:

优先级是指在一个消息队列中,每条消息都有不同的优先级,一般用整数来描述,优先级高的消 息先投递,如果消息完全在一个内存队列中,那么在投递前可以按照优先级排序,令优先级高的先投递。

由于 RocketMQ 所有消息都是持久化的( 持久化到磁盘,每个partition只存index,导致后面严格排序代价很大,很大),所以如果按照优先级来排序,开销会非常大,因此 RocketMQ 没有特 意支持消息优先级,但是可以通过变通的方式实现类似功能,即单独配置一个优先级高的队列,和一个普通优先级 的队列, 将不同优先级发送到不同队列即可。

解决:

对于优先级问题,可以归纳为 2 类

  1. 1)  只要达到优先级目的即可,不是严格意义上的优先级,通常将优先级划分为高、中、低,或者再多几个级

    别。每个优先级可以用不同的 topic 表示,发消息时,指定不同的 topic 来表示优先级,这种方式可以解决

    绝大部分的优先级问题,但是对业务的优先级精确性做了妥协。

  2. 2)  严格的优先级,优先级用整数表示,例如 0 ~ 65535,这种优先级问题一般使用不同 topic 解决就非常不合

    适。如果要让 MQ 解决此问题,会对 MQ 的性能造成非常大的影响。这里要确保一点,业务上是否确实需 要这种严格的优先级,如果将优先级压缩成几个,对业务的影响有多大?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自驱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值