参数差异说明

最近更新时间:2023-08-14 16:09:57

我的收藏

新版 CMQ 与原CMQ参数差异说明

新版 CMQ 在数据流(消息收发)SDK 的用法和语法上与原 CMQ 一致,但有些参数与特性会和原 CMQ 有一定的差异。这些差异新版 CMQ 会通过特殊设置这些参数来保证在您迁移之后不会改变原有的生产消费逻辑,但如果是新建的队列或主题则尽可能参考新 CMQ 的逻辑进行设置。

消息生命周期

新版 CMQ 采用了业界通用的消息生命周期模型,即通过 TTL(Time to Live)和 Retention 配合来避免产生过量的堆积导致消息队列负载过高(消息堆积容量达到100%以上时会触发不可写入)。
相较于原版 CMQ,新版 CMQ 增设了消息最大未确认时间,范围30秒到12小时,如果消费客户端在获取到消息后超过此时间仍未进行消息的确认,则服务端会自动确认该消息。
未确认的消息将持续保存在 MQ 中不会删除,已确认的消息受到消息可回溯时间大小和可回溯磁盘空间的作用(如果没消息回溯开则会在确认后直接删除)
新版 CMQ 取消了消息生命周期的限制。默认不再支持消息长时间在队列中堆积,如有特殊需要可以开启消息回溯并设置可回溯的时间范围,只有开启了消息回溯的消息才允许在消息队列中保存超过12小时,开启后会产生一定的存储费用,具体计费请参考新版 CMQ 计费说明。
说明
从原 CMQ 迁移到新 CMQ 的队列,如果设置了生命周期超过12小时的,会将消息最大未确认时间调整到12小时,其余情况,消息最大未确认时间会继承原 CMQ 消息生命周期的值。

消息堆积上限

新版 CMQ 取消了原版 CMQ 关于消息堆积条数的限制,理论上只要存储资源满足,可以无限堆积。但实际从硬件层面出发,我们会给每个队列分配10GB的最大堆积存储资源,并支持您通过该值配置对应的腾讯云可观测平台告警。



一般平均1KB大小的消息可以堆积大约1千万条,可以依据此进行简单换算,如发现迁移后此处可能存在堆积超过上限的风险,可以及时通过 工单 与我们联系。

消息大小

新版 CMQ 不再支持设置消息大小上限,为不影响业务从原 CMQ 迁移,新增队列统一设定为原 CMQ 的消息大小上限,即1024KB。
说明
从原 CMQ 迁移过来的队列不再支持设置消息大小,如需增加限制,请重新创建队列使用。

消息接收长轮询等待时间

参数意义完全相同,但是其作用效果在新版 CMQ 和原 CMQ 上有所不同,新版中该参数推荐设置到3s以下。
在新版 CMQ 中,如果消息接收长轮询等待时间设置的过大,由于底层需要保证“至少一次”的语义,可能导致消息投递的重复率显著增高,从而对于一些未做消息去重的下游业务系统产生较大影响。因此,如果希望减少消息重复的概率,可以尽量设置的小一些,推荐3秒,3秒以下基本不会产生重复投递。

未确认消息容量

新版 CMQ 增设了未确认消息容量的限制,这样可以保障 MQ 服务端的内存消耗得到控制从而确保稳定性。不可见消息过多一般是客户端未及时 ACK 导致的,该指标有对应的监控图表进行监控,如有明显突增,请尽快检查消费者的确认删除逻辑是否正常运行,如突发性容量不足请尽快 提交工单 申请。