在同一主题上创建多个订阅,以实现负载共享(发布/订阅)

时间:2019-02-06 17:34:06

标签: rabbitmq publish-subscribe google-cloud-pubsub

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

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

我有2个问题:

  1. 在没有控制台的地方,我看到3个相同的T用户。
  2. 如果我尝试同时启动所有3个订阅者实例。我收到“发生服务错误”。如果我按顺序启动,错误会消失。

最后,谷歌是否认真对待发布/订阅?通过查看文档和公众参与,我不确定是否应该切换到google pub / sub。

谢谢

2 个答案:

答案 0 :(得分:3)

在发布/订阅中,每个订阅都会获取每封邮件的副本。因此,要负载平衡处理消息,您不需要3个不同的订阅,而是一个将消息分发给3个工作程序的订阅。

如果您使用请求传递,只需创建一个订阅(设置系统时作为一次操作),然后让每个工作程序都从同一订阅中获取。

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

Google十分重视发布/订阅,它已与许多产品(GCS,BigQuery,Dataflow,Stackdriver,Cloud Functions等)深度集成,并且Google在内部使用它。

答案 1 :(得分:0)

根据 GCP 上的文档,https://cloud.google.com/pubsub/architecture

负载均衡订阅者是可能的,但他们都必须使用相同的订阅。没有准备好任何代码示例或 POC,但仍在继续工作。

相关问题