首页 > 解决方案 > 在同一主题上创建多个订阅以实现负载共享(发布/订阅)

问题描述

我花了将近一天的时间在 google pub sub 文档上创建一个小应用程序。我正在考虑从 rabbitMQ 切换到 google pub/sub。这是我的问题:

我有一个将消息推送到主题(T)的应用程序。我想通过订阅者进行负载共享。所以我为 T 创建了 3 个订阅者。我将所有 3 个订阅者的名称保持不变(S),这样我就不会收到 3 次相同的消息。

我有两个问题:

  1. 我没有在哪里安慰我看到 3 个相同的 T 订阅者。它显示 1
  2. 如果我尝试同时启动所有 3 个订阅者实例。我收到“发生服务错误。”。如果我按顺序启动,错误就会消失。

最后,谷歌对 pub/sub 是认真的吗?查看文档和公众参与,我不确定是否应该切换到 google pub/sub。

谢谢,

标签: rabbitmqpublish-subscribegoogle-cloud-pubsub

解决方案


在 pub/sub 中,每个订阅都会获取每条消息的副本。因此,要对处理消息进行负载平衡,您不需要 3 个不同的订阅,而是需要将消息分发给 3 个工作人员的单个订阅。

如果您使用拉式交付,只需创建一个订阅(作为设置系统时的一次性操作),然后让每个工作人员从同一个订阅中拉取。

如果您使用推送交付,则将单个订阅推送到提供负载平衡的单个端点(例如,推送到后端服务中具有多个实例的 HTTP 负载平衡器

Google 非常重视 Pub/Sub,它被深度集成到许多产品(GCS、BigQuery、Dataflow、Stackdriver、Cloud Functions 等)中,并且 Google 在内部使用它。


推荐阅读