本文介绍消息服务MNS如何通过消息过滤标签把消息推送到不同的推送目标。

背景信息

通常情况下,在主题中创建订阅消息服务MNS可以把消息推送到订阅的推送目标。即消息和订阅没有设置消息过滤标签,所有消息都可以被成功推送到推送目标。

使用消息过滤标签功能时,消息的消息过滤标签和订阅的消息过滤标签一致,消息才能被成功推送到推送目标。即消息设置了消息过滤标签,订阅也设置了消息过滤标签,两个消息过滤标签一致,消息可以被成功推送到推送目标。

特殊情况下,当订阅没有设置消息过滤标签,无论消息是否设置了消息过滤标签,都可以被成功推送到推送目标。

应用场景

一些场景中需要根据消息内容把消息推送到不同的推送目标。为了达到这一功能,您可以创建多个主题,并为每个主题设置相应的推送目标。但是这样会增加额外的成本,并且增加了运维的复杂度。为了避免这种情况,消息服务MNS提供了消息过滤标签功能。您可以只创建一个主题,并在创建订阅时设置不同的消息过滤标签,结合消息的消息过滤标签消息服务MNS就可以把消息推送到不同的推送目标中。

消息过滤示例

下图介绍了携带不同消息过滤标签的消息,经过携带了消息过滤标签的订阅过滤后被推送到目标队列的过程。

过滤标签

上图示例场景中,在主题Topic 1创建3个消息过滤标签不同的订阅,Subscription 1、Subscription 2和Subscription 3。这3个订阅的推送目标分别是Queue 1、Queue 2和Queue 3。

  • 消息的消息过滤标签和订阅的消息过滤标签一致。消息过滤过程如下:
    • 消息服务MNS将Message 1推送到队列Queue 1。
    • 消息服务MNS将Message 2推送到队列Queue 2。
  • 订阅没有消息过滤标签。消息过滤过程如下:
    • 消息服务MNS将Message 1推送到队列Queue 3。
    • 消息服务MNS将Message 2推送到队列Queue 3。
    • 消息服务MNS将Message 3推送到队列Queue 3。