Java 为什么持久订阅一次只能有一个活动订阅服务器

Java 为什么持久订阅一次只能有一个活动订阅服务器,java,jms,message-queue,messagebroker,durability,Java,Jms,Message Queue,Messagebroker,Durability,从 以更高的开销为代价,您可以使用 Session.createDurableSubscriber方法创建持久订阅者。 持久订阅一次只能有一个活动订阅服务器 你能解释一下为什么选择这样的设计吗 在我看来,这个主题是特别针对订阅者众多的情况而提出的。一个主题可以有任意数量的订阅者,持久订阅者和非持久订阅者。每个订户都将获得一份已发布消息的副本。所以当你有很多订户时,你需要创建很多订户 如果有多个订阅服务器共享同一订阅,则将在它们之间分发发布。因此,只有一个订阅服务器将获得发布,而不是所有订阅服务器

以更高的开销为代价,您可以使用 Session.createDurableSubscriber方法创建持久订阅者。 持久订阅一次只能有一个活动订阅服务器

你能解释一下为什么选择这样的设计吗


在我看来,这个主题是特别针对订阅者众多的情况而提出的。

一个主题可以有任意数量的订阅者,持久订阅者和非持久订阅者。每个订户都将获得一份已发布消息的副本。所以当你有很多订户时,你需要创建很多订户

如果有多个订阅服务器共享同一订阅,则将在它们之间分发发布。因此,只有一个订阅服务器将获得发布,而不是所有订阅服务器


持久订阅是将发布发送到订阅服务器队列的订阅,即使订阅应用程序处于脱机状态。一旦应用程序上线,这些消息就会被传递

订阅服务器的队列是什么?这有助于我理解订阅服务器队列是消息传递提供程序将出版物放入其中的队列。订阅者从队列中获取发布。通常,消息传递提供程序会在创建订阅时自动创建订户队列。应用程序也可以提供订阅者队列名称。message broker(如果我理解您是正确的,则与message provider相同)是否将消息放在两个位置:主题队列和与同一主题关联的订阅队列?我不知道有主题队列。据我所知,只有订阅队列。