Nats.io: Будут ли подписчики обрабатывать сообщения параллельно с разными субъектами, но с одинаковыми именами? - PullRequest
0 голосов
/ 07 сентября 2018

Давайте представим, что у нас есть сервер A с издателем и серверы B и C с потребителями. Также у нас есть 5 различных предметов; foo1, foo2, ... foo5. Мы всегда хотим отправить сообщение только одному потребителю и получить только один ответ.

Таким образом, мы используем функцию requestOne из JS SDK на стороне издателя и подписываем функцию с параметром {queue: "default"}. Таким образом, оба сервера B и C были подписаны один раз для каждого субъекта. Но каждый раз, когда они подписываются, они используют очередь с именем «default», чтобы несколько потребителей не получали одно и то же сообщение, как указано в docs .

Итак, вопрос: Будет ли эта очередь с именем «default» распределена между всеми субъектами? Или у каждого субъекта будет своя собственная очередь с именем «default», и она просто распределяется между подписчиками определенного субъекта.

Например: производитель генерирует 10 сообщений 2 для каждой темы. Будем ли мы обрабатывать 10 сообщений одновременно или только 2 сообщения, поскольку все подписки имеют одну и ту же очередь с именем «default»?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Одно и то же имя очереди в разных темах является отдельным.

Вы можете проверить это с примерами в ссылке ниже. https://nats.io/documentation/additional_documentation/nats-queueing/

Запустить нац-сервер

gnatsd

sub subject1

go run nats-qsub.go subject1 по умолчанию

...

sub subject2

go run nats-qsub.go subject2 по умолчанию

...

pub subject1 & 2

go run nats-pub.go subject1 "message"

...

go run nats-pub.go subject2 "message"

...

0 голосов
/ 28 сентября 2018

Вы формируете группу очередей на основе заданного вами имени очереди и темы. Таким образом, группа очередей «foo» отличается от группы очередей на «bar».

При этом с подстановочными знаками у вас может быть несколько предметов, входящих в одну группу очереди. То есть 2 члена группы "bar", прослушивающих "foo. *", Делят обработку сообщений, отправленных на "foo.bar", "foo.baz" и т. Д.

...