Nats.io: Будут ли подписчики обрабатывать сообщения параллельно с разными субъектами, но с одинаковыми именами?
Давайте представим, что у нас есть сервер A с издателем и серверы B и C с потребителями. Также у нас есть 5 различных предметов; foo1, foo2,... foo5. Мы всегда хотим отправить сообщение только одному потребителю и получить только один ответ.
Поэтому мы используем функцию requestOne из JS SDK на стороне издателя и подписываем функцию с параметром {queue: "default"}. Таким образом, оба сервера B и C были подписаны один раз для каждого субъекта. Но каждый раз, когда они подписываются, они используют очередь с именем "default", чтобы несколько потребителей не получали одно и то же сообщение, как упомянуто в документации.
Таким образом, вопрос заключается в следующем: будет ли эта очередь с именем "default" использоваться всеми субъектами? Или у каждого субъекта будет своя собственная очередь с именем "по умолчанию", и она просто распределяется между подписчиками конкретного субъекта.
Например: производитель генерирует 10 сообщений 2 для каждой темы. Будем ли мы обрабатывать 10 сообщений одновременно или только 2 сообщения, поскольку все подписки имеют одну и ту же очередь с именем "default"?
2 ответа
Вы формируете группу очередей на основе заданного вами имени очереди и темы. Таким образом, группа очередей "foo" отличается от группы очередей на "bar".
Тем не менее, с подстановочными знаками, вы можете иметь несколько субъектов, входящих в одну группу очереди. То есть 2 члена группы "bar", прослушивающих "foo.*", Делят обработку сообщений, отправленных на "foo.bar", "foo.baz" и т. Д.
Одно и то же имя очереди в разных темах является отдельным.
Вы можете проверить это с примерами в ссылке ниже. https://nats.io/documentation/additional_documentation/nats-queueing/
запустить нац сервер
gnatsd
sub subject1
пойти запустить nats-qsub.go subject1 по умолчанию
...
sub subject2
пойти запустить nats-qsub.go subject2 по умолчанию
...
паб тема1 и 2
пойти запустить nats-pub.go subject1 "сообщение"
...
пойти запустить nats-pub.go subject2 "сообщение"
...