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

Sid*_*pta 4 google-cloud-platform google-cloud-pubsub

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

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

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

谢谢

Kam*_*osn 7

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

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

attributes.country = a
Run Code Online (Sandbox Code Playgroud)
attributes.country = b
Run Code Online (Sandbox Code Playgroud)

上一个答案

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

目前有两种处理方法:

  1. 通过查看属性并立即确认他们不感兴趣的所有消息来过滤订阅者本身中的消息。订阅者真正感兴趣的消息。
  2. 在每个主题上创建单独的主题和订阅,根据属性将消息发布到这些单独的主题,然后让订阅者获取有关相应主题的订阅的消息。

我们正在探索添加功能的方法,这将使这个用例在未来更容易。

  • 基于内容的过滤可能是 Google Cloud Pub/Sub 目前唯一缺少的重要项目。其余的我可以轻松处理,但这对我来说是一个巨大的限制。是的,我最多可以创建 10,000 个主题...但管理起来一团糟! (2认同)