首页 > 解决方案 > Nats.io:具有不同主题但具有相同命名队列的订阅者会并行处理消息吗?

问题描述

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

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

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

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

标签: queuemessage-queuemessagingpublish-subscribenats.io

解决方案


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

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


推荐阅读