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

时间:2019-11-06 16:50:13

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

我已经使3个客户端连接到一个订阅,以及1个发布者。在图像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"
    })

enter image description here

1 个答案:

答案 0 :(得分:5)

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

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

这里是一张试图使其更清晰的图形。左侧是负载平衡,右侧是扇出:

load balancing and fan out