文档首页/ 消息通知服务 SMN/ 用户指南/ 附录/ 订阅筛选策略使用样例
更新时间:2024-10-21 GMT+08:00
分享

订阅筛选策略使用样例

操作场景

本文主要介绍在添加订阅时如何配置订阅筛选策略,用于限定消息发布范围。订阅筛选策略的默认策略应用于消息属性。当订阅者设置了筛选策略,且发布消息时设置了消息属性,则在消息发布时会根据订阅筛选策略判断消息是否推送给订阅者。

前提条件

已完成主题创建。详细操作步骤请参考创建主题

添加订阅

在已创建的主题下添加以下两种订阅。添加订阅详细操作步骤请参见订阅主题

  • 用户在主题下添加订阅终端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和订阅B。

  • 场景二:

    消息属性字段为:

    [
        {
            "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。

  • 场景六:

    订阅筛选策略字段没有配置。

    发送结果:带有任何消息属性的消息不会发送给未配置订阅筛选策略的订阅。

相关文档