Google 基于属性或消息内容的 Pubsub 订阅

Google Pubsub Subscription based on attributes or Message content

我对 GCP 平台比较陌生。我有一个在 pubsub 主题中发布消息的系统。消息有一个名为 country 的属性,基于此属性,不同的客户端可能会订阅消息。客户 X 只对国家 a 的消息感兴趣。客户端Y只对b国的消息感兴趣。

我是否必须在 google pub sub 中为每个国家/地区创建主题? 或者有一种聪明的方法可以根据属性值订阅单个主题

我指的是 google 文档中所述发布者传递的属性。 https://cloud.google.com/pubsub/docs/publisher

谢谢

2020 年 6 月更新Filtering 现在是 Google Cloud Pub/Sub 中的一项可用功能。创建订阅时,可以指定一个查看消息属性的过滤器。如果消息与过滤器不匹配,Pub/Sub 服务会自动确认该消息而不将其传递给订阅者。

在这种特定情况下,您可以创建一个主题和两个不同的订阅,一个用于获取国家/地区 a 的消息,一个用于获取国家/地区 b 的消息。每个订阅的过滤器为:

attributes.country = a
attributes.country = b

上一个回答

您所说的功能称为过滤:您希望订阅能够根据消息中提供的属性指定它想要接收消息的子集。目前,Google Cloud Pub/Sub 中不存在该功能。

现在有两种方法可以解决这个问题:

  1. 通过查看属性并立即确认他们不感兴趣的所有消息来过滤订阅者本身的消息。这确实意味着您将支付向每个订阅者传递所有消息的费用,这可能是不希望的取决于订阅者实际感兴趣的消息百分比。
  2. 创建单独的主题和对每个主题的订阅,根据属性向这些单独的主题发布消息,然后让订阅者在相应主题的订阅中获取消息。

我们正在探索添加功能的方法,以便将来更轻松地使用此用例。

如果您希望能够进行订阅过滤 - 请在云端 Pub/Sub 创意论坛上投票! https://googlecloudplatform.uservoice.com/forums/302631-cloud-pub-sub