Google Pub/Sub 每约 5 条消息仅发送给一个订阅

dan*_*man 0 publish-subscribe google-cloud-platform google-cloud-pubsub

我已经让 3 个客户端连接到一个订阅和一个发布者。在图像 2 中,订阅位于终端上,一个订阅未看到,因为它托管在 DigitalOcean Droplet 上。似乎每 5 条消息,它就会切换哪个订阅者实际收到消息,这不应该发生。我也改变了速度,它总是大约 5 条消息。

以下是所有客户端用于订阅的代码:

sub.on("message", (msg) => {
  console.log(`Message:1 ${msg.data.toString("utf-8")}`)
  msg.ack()
})
Run Code Online (Sandbox Code Playgroud)

这是发布的代码:

console.log("send")
topic.publish(Buffer.from("hey"), {
        channelId: "641273551806267403"
    })
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Kam*_*osn 14

在 Cloud Pub/Sub 中,订阅是一个逻辑实体,它希望将所有消息发布到与订阅关联的主题。订阅者是代表订阅接收消息的客户端。当有多个订阅者接收单个订阅的消息时,每个订阅者都会收到消息的一个子集。这是负载平衡的情况,其中使用多个订阅者来大规模处理消息;如果需要支持更多消息,只需打开更多订阅者即可接收来自同一订阅的消息。

当一个主题有多个订阅时,那么每条消息都必须发送给代表每个订阅接收消息的订阅者。这是扇出用例。

这是一个试图使其更清晰的图形。左边是负载均衡,右边是扇出:

负载平衡和扇出