【发布时间】:2020-03-03 05:19:05
【问题描述】:
我已经让 3 个客户端连接到一个订阅,以及一个发布者。在图像 2 中,订阅位于终端上,并且没有看到一个订阅,因为它托管在 DigitalOcean Droplet 上。似乎每 5 条消息,它切换哪个订阅者实际接收消息,这不应该发生。我也改变了速度,总是大约 5 条消息。
这是所有客户端用于订阅的代码:
sub.on("message", (msg) => {
console.log(`Message:1 ${msg.data.toString("utf-8")}`)
msg.ack()
})
这里是发布的代码:
console.log("send")
topic.publish(Buffer.from("hey"), {
channelId: "641273551806267403"
})
【问题讨论】:
-
我最初的想法是设计意图是每个订阅一个客户端......这似乎与其他平台非常不同
-
我的上述想法似乎是解决方案......我会等待另一个人在我回答之前插话
-
设计取决于。如果您希望多个服务响应一个消息队列,请使用一个订阅。如果您希望一条消息由多个服务处理(例如,一个服务在 BigQuery 中记录消息,另一个服务处理该消息),请使用多个订阅。在第一种情况下,每个服务将处理一定比例的消息,在第二种情况下,每个服务将处理所有消息。
-
@JohnHanley 这实际上有点酷,因为您可以使用第一种情况进行负载平衡...谢谢!
标签: google-cloud-platform publish-subscribe google-cloud-pubsub