【问题标题】:Why durable subscription can have only one active subscriber at a time为什么持久订阅一次只能有一个活跃订阅者
【发布时间】:2018-01-30 23:27:18
【问题描述】:

来自official doc

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

你能解释一下为什么选择设计吗?

从我的角度来看,主题是特别针对我们有很多订阅者的情况而设计的。

【问题讨论】:

    标签: java jms message-queue messagebroker durability


    【解决方案1】:

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

    如果有多个订阅者共享同一个订阅,则将在他们之间分发发布。所以只有一个订阅者会得到发布,而不是全部。

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

    【讨论】:

    • 订阅者的队列是什么?
    • 订阅者队列是消息传递提供者将发布放入其中的队列。订阅者从队列中获取发布。通常,消息传递提供程序会在创建订阅时自动创建订阅者队列。应用程序也可以提供订阅者队列名称。
    • 消息代理(如果我理解正确,与消息提供者相同)将消息放入 2 个位置:主题队列和与同一主题关联的订阅队列,这是真的吗?
    • 我不知道主题队列。据我所知,只有订阅队列。
    • jms api有2个方法:1.session.createDurableSubscriber(topic) 2. session.createConsumer(topic)
    猜你喜欢
    • 1970-01-01
    • 2017-01-24
    • 2016-12-29
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多