Google Pub / Sub отправляет только одну подписку каждые ~ 5 сообщений - PullRequest
0 голосов
/ 06 ноября 2019

Я подключил к подписке 3 клиента и одного издателя. На изображении 2 подписки находятся на терминале, и одна подписка не видна, поскольку она размещена на дроплете DigitalOcean. Кажется, каждые 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 Ответ

4 голосов
/ 07 ноября 2019

В Cloud Pub / Sub подписка - это логическая сущность, которая хочет, чтобы все сообщения публиковались в теме, с которой связана подписка. Подписчик - это клиент, который получает сообщения от имени подписки. Когда есть несколько подписчиков, получающих сообщения для одной подписки, то каждый подписчик получает подмножество сообщений. Это случай балансировки нагрузки , когда используется несколько подписчиков для обработки сообщений в масштабе;если требуется поддержка большего количества сообщений, нужно просто включить больше подписчиков для получения сообщений из одной и той же подписки.

Если в теме несколько подписок, то каждое сообщение необходимо отправлять подписчику, получающему сообщения от именикаждая подписка. Это вариант использования fan out .

Вот рисунок, который пытается сделать его немного более понятным. Левая сторона - это балансировка нагрузки, правая сторона - вентилятор:

load balancing and fan out

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...