订阅筛选策略使用样例
操作场景
本文主要介绍在添加订阅时如何配置订阅筛选策略,用于限定消息发布范围。订阅筛选策略的默认策略应用于消息属性。当订阅者设置了筛选策略,且发布消息时设置了消息属性,则在消息发布时会根据订阅筛选策略判断消息是否推送给订阅者。
前提条件
已完成主题创建。详细操作步骤请参考创建主题。
添加订阅
在已创建的主题下添加以下两种订阅。添加订阅详细操作步骤请参见订阅主题。
- 用户在主题下添加订阅终端A,并且希望在每周周日和周三的早上或下午将消息通知给A。则用户可以在创建订阅A时配置如下订阅筛选策略:
{ "filter_polices": [ { "name": "week", "string_equals": [ "sunday", "wednesday" ] }, { "name": "time", "string_equals": [ "morning", "afternoon" ] } ] }
- 用户在主题下添加订阅终端B,并且希望在每周周一、周二和周三的晚上或深夜将消息通知给B。则用户在创建订阅B时配置如下订阅筛选策略:
{ "filter_polices": [ { "name": "week", "string_equals": [ "monday", "tuesday", "wednesday" ] }, { "name": "time", "string_equals": [ "night", "midnight" ] } ] }
发布消息
向已创建的主题发布消息,根据添加的不同订阅,会出现以下场景。
发布消息详细操作步骤请参见发布主题消息简介。
- 场景一:
{ "name": "week", "type": "STRING", "value": [ "sunday" ] }
发送结果:在消息中只规定了消息属性字段中的week字段,而没有规定time字段,因此本条消息只会发送给订阅A。
- 场景二:
[ { "name": "week", "type": "STRING", "value": [ "sunday" ] }, { "name": "time", "type": "STRING", "value": [ "night" ] } ]
发送结果:此条消息含义为发送给周日晚上接收消息的订阅者,订阅A和订阅B均不符合条件。因此本条消息不会发送给订阅A和订阅B。
- 场景三:
[ { "name": "week", "type": "STRING", "value": [ "monday" ] }, { "name": "time", "type": "STRING", "value": [ "night" ] } ]
发送结果:此条消息含义为发送给周一晚上接收消息的订阅者,订阅A不符合条件。因此本条消息只发送给订阅B。
- 场景四:
[ { "name": "week", "type": "STRING", "value": [ "sunday" ] }, { "name": "time", "type": "STRING", "value": [ "morning" ] } ]
发送结果:此条消息含义为发送给周日早上接收消息的订阅者,订阅A符合条件,订阅B不符合条件。因此本条消息不会发送给订阅B。
- 场景五:
[ { "name": "week", "type": "STRING_ARRAY", "value": [ "sunday", "monday" ] }, { "name": "time", "type": "STRING_ARRAY", "value": [ "morning", "night" ] } ]
发送结果:此条消息含义为发送给周日或周一的早上或晚上接收消息的订阅者,订阅A和订阅B均符合条件。因此本条消息会发送给订阅A和订阅B。
- 场景六:
发送结果:带有任何消息属性的消息不会发送给未配置订阅筛选策略的订阅。