上云无忧 > 文档中心 > 腾讯云消息队列 CMQ 版 - 标签键匹配功能说明
消息队列 CMQ 版
腾讯云消息队列 CMQ 版 - 标签键匹配功能说明

文档简介:
TDMQ CMQ 版的 Topic 模式支持订阅筛选标签(tag)功能,类似于 RabbitMQ 的 direct_routing 模式,topic_pattern 模式在下个迭代提供。由于筛选标签的使用策略较复杂,本文将结合不同场景进行说明。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
TDMQ CMQ 版的 Topic 模式支持订阅筛选标签(tag)功能,类似于 RabbitMQ 的 direct_routing 模式,topic_pattern 模式在下个迭代提供。由于筛选标签的使用策略较复杂,本文将结合不同场景进行说明。

场景说明

场景1

有4个订阅者 A、B、C、D,A 消息标签是 apple,B 消息标签是 xiaomi,C 的消息标签是 imac+xiaomi,D 没有设置任何标签。 此时,有生产者 publish 到 Topic 100条消息,带的消息标签过滤为:apple、imac、iphone、macbook。此后 Topic 立即投递到 A、B、C、D。
场景分析
订阅者
消息标签
消息接收说明
A
apple
由于 apple 能匹配消息过滤标签中的 apple,则能正常收到100条消息。
B
xiaomi
不能收到任何消息。
C
imac+xiaomi
由于其中一个标签 imac 能匹配,则能正常收到100条消息 。
D
-
可以收到任何消息。

场景2

Topic 有且仅有4个订阅者 A、B、C、D,四个订阅者都没有设置消息 tag。 此时,有生产者 publish 到 Topic 100条消息,带的消息标签过滤为:apple、imac、iphone、macbook。此后 Topic 立即投递到 A、B、C、D。
场景分析: 订阅者 A、B、C、D 均没有 tag,则投递时不用匹配消息, A、B、C、D 都能收到这100条消息。

场景3

Topic 有且仅有1个订阅者 A,A 的订阅标签设置为 xiaomi。 此时,有生产者 publish 到 Topic 100条消息,带的消息标签过滤为:apple、imac、iphone、macbook。此后 Topic 立即投递到 A。
场景分析
对于订阅者 A,订阅标签不匹配,则 A 无法收到这100条消息。此时这100条消息立即丢弃,不会堆积在 TDMQ CMQ 版里。
生产者 publish 到 Topic 时,消息过滤 tag 只能在 publish 前设置一次,跟消息 ID 绑定,不可修改。

场景4

Topic 名为 test1 ,在12点01分,调用了订阅发布的 API,定义该次操作为“发布 test1”,发布后 Topic 投递到订阅者,给 A、B、C 三个订阅者投递了200条消息。 假设结果为:A 有100条消息接收失败,B 有30条消息接收失败,C 的200条消息全部接收成功
场景分析
消息堆积:在 A、B、C 三个订阅者中,假定消息投递失败的总集合为110条(A 有100条消息失败,B 有30条失败,C全部成功,三者之间的失败消息有交错的部分),只要存在任意1个订阅者与某条消息存在关联关系,该消息都不会被立即退订。
阻塞策略:以 A 为案例,Topic 投递给 A 200条消息,第101条失败时候,则后面的99条的投递会被阻塞。状态为有100条消息接收失败。
重试策略(退避重试):Topic-test1 会每隔 N 秒给 A 重新投递消息,失败的100条里,按顺序,从第一条重新尝试,若失败三次,直接就丢弃,然后投递下一条消息,失败三次后再次丢弃,按顺序排列。
重试策略(衰退指数重试):以 A 为案例,Topic 会并发投递100条消息(无法保证先后顺序)当订阅者接收的第一条消息失败后,从第一条重新尝试,若失败,继续阻塞。后续新增的投递消息,会继续阻塞。
消息生命周期不可延长:假定这110条堆积在 Topic-test1 里的消息,中间无论被重试多少次,生命周期都为1天,从生产者推送到 Topic 的时间点,作为起止时间点,到期后删除
重新推送:生产者不断往 Topic 中生产新的消息,客户在12点02分,又调用了订阅发布的 API,加上之前失败堆积的110条消息,假设目前 Topic 中共有110(失败堆积)+100(1分钟时间内新增的消息)=210条消息,再次投递。这时,A、B 的重试策略为衰退指数重试,处于“失联”状态,则210条消息会继续堆积。 对于 C,只接收新增的100条消息。
说明
每一条消息的 ID,作为 key,value 是关联的订阅者、代表每个订阅者消费成功与否。

场景5

Topic 名为 test2 ,在12点01分,调用了订阅发布的 API,定义该次操作为“发布 test2”,给 A、B、C 三个订阅者投递了200条消息。 假设结果为:A、B、C 的200条消息全部接收成功。
场景分析: 若 Topic-test2,有且仅有 A、B、C 三个订阅者,且都确定消费成功后,Topic 会立即删除200条消息。

规律总结

通过以上不同场景,标签匹配规律如下:
订阅者
订阅者有无 tag
有无消息 tag
消息接收说明
A
订阅者不匹配,不能收到消息。
B
投递时消息不用匹配,订阅者都能收到消息。
C
两者匹配的,才能收到消息。支持 N:M 匹配,如消息有10个 tag,订阅者有4个 tag,其中有1个 tag 相互能匹配上,则订阅者能收到消息。
D
投递后,所有订阅者都能收到消息。
相似文档
  • TDMQ CMQ 版的路由键匹配功能类似于 RabbitMQ 的 exchange queue,可以用于消息过滤,根据不同的条件使订阅者获取不同的消息。创建 Topic 时,可开启路由匹配键。
  • CAM 基本概念: 主账号通过给子账号绑定策略实现授权,策略设置可精确到 [API,资源,用户/用户组,允许/拒绝,条件] 维度。
  • 操作场景: 标签是腾讯云提供的用于标识云上资源的标记,是一个键-值对(Key-Value)。标签可以帮助您从各种维度(例如业务、用途、负责人等)方便地对 TDMQ CMQ 版资源进行分类管理。
  • 操作场景: 本文档指导您对资源进行编辑标签的操作。 使用限制: 关于标签的使用限制,请参见 使用标签管理资源 - 使用限制。
  • 操作场景: 腾讯云默认为所有用户提供腾讯云可观测平台功能,无需用户手动开通。用户在使用了腾讯云某个产品后,腾讯云可观测平台才可以开始收集监控数据。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部