0

假设我们有服务器 A 和发布者,服务器 B 和 C 有消费者。我们也有5个不同的科目;富1,富2,...富5。我们总是希望只向一个消费者发送消息并且只接收一个响应。

因此,我们在发布者端使用JS SDK中的 requestOne 函数,并使用 {queue: "default"} 选项订阅函数。因此,服务器 B 和 C 都为每个主题订阅了一次。但是每次订阅时,他们都会使用名称为“default”的队列来防止多个消费者收到与docs中提到的相同的消息。

所以问题是:这个名为“default”的队列是否会在所有主题中共享?或者每个主题都有自己的名为“default”的队列,它只是在特定主题的订阅者之间共享。

例如:生产者为每个主题生成 10 条消息 2。由于所有订阅共享同一个名为“default”的队列,我们​​会同时处理 10 条消息还是只处理 2 条消息?

4

2 回答 2

1

您可以根据您指定的队列名称和主题形成一个队列组。所以“foo”的队列组与“bar”上的队列组不同。

话虽如此,使用通配符,您可以让多个主题成为同一个队列组的一部分。也就是说,组“bar”的 2 个成员监听“foo.*”将拆分处理在“foo.bar”、“foo.baz”等上发送的消息。

于 2018-09-28T20:18:47.923 回答
1

不同主题中的相同队列名称是分开的。

您可以使用下面链接中的示例对其进行测试。 https://nats.io/documentation/additional_documentation/nats-queueing/

启动 nats 服务器

蚊虫

子主题1

去运行 nats-qsub.go subject1 默认

...

子主题2

去运行 nats-qsub.go subject2 默认

...

酒吧主题1&2

运行 nats-pub.go subject1 “消息”

...

运行 nats-pub.go subject2 “消息”

...

于 2018-10-25T09:14:53.910 回答