rabbitmq - 在同一主题上创建多个订阅以实现负载共享(发布/订阅)
问题描述
我花了将近一天的时间在 google pub sub 文档上创建一个小应用程序。我正在考虑从 rabbitMQ 切换到 google pub/sub。这是我的问题:
我有一个将消息推送到主题(T)的应用程序。我想通过订阅者进行负载共享。所以我为 T 创建了 3 个订阅者。我将所有 3 个订阅者的名称保持不变(S),这样我就不会收到 3 次相同的消息。
我有两个问题:
- 我没有在哪里安慰我看到 3 个相同的 T 订阅者。它显示 1
- 如果我尝试同时启动所有 3 个订阅者实例。我收到“发生服务错误。”。如果我按顺序启动,错误就会消失。
最后,谷歌对 pub/sub 是认真的吗?查看文档和公众参与,我不确定是否应该切换到 google pub/sub。
谢谢,
解决方案
在 pub/sub 中,每个订阅都会获取每条消息的副本。因此,要对处理消息进行负载平衡,您不需要 3 个不同的订阅,而是需要将消息分发给 3 个工作人员的单个订阅。
如果您使用拉式交付,只需创建一个订阅(作为设置系统时的一次性操作),然后让每个工作人员从同一个订阅中拉取。
如果您使用推送交付,则将单个订阅推送到提供负载平衡的单个端点(例如,推送到后端服务中具有多个实例的 HTTP 负载平衡器
Google 非常重视 Pub/Sub,它被深度集成到许多产品(GCS、BigQuery、Dataflow、Stackdriver、Cloud Functions 等)中,并且 Google 在内部使用它。
推荐阅读
- data-structures - 检查两个堆栈在 O(1) 空间中是否相等
- c# - 基于调用堆栈创建条件断点
- c# - C# 和 python 之间的命名管道
- apache-spark - Flink 和 Spark 中的 batch 能分别有多大?
- systemc - 位向量输出分配延迟
- image - 将 Blogspot RSS 提要缩略图大小(现在为 72 像素)更改为最大分辨率
- sql - 与 H2 和 Oracle DB 兼容的日期比较
- json - 使用 Postgresql 进行 HQL 注入
- reactjs - 在 onClick 之后如何使用 Enzyme 检查 React Hooks 组件的更改?
- android - 如何在 android 中获取 UTM 属性?