gpt4 book ai didi

java - 在 ActiveMQ 中使用带有虚拟主题的持久订阅者,订阅恢复策略是否发挥作用?

转载 作者:行者123 更新时间:2023-11-30 03:16:42 25 4
gpt4 key购买 nike

我对如何正确使用 ActiveMQ 有点困惑。

我正在尝试做什么

我有系统 A,它向虚拟主题生成消息。然后是系统 B 和 C,它们都使用来自同一虚拟主题的消息。系统 B 或 C 可能会离线。因此,当他们重新上线时,我需要他们接收离线期间生成的所有消息。

到目前为止我已经尝试过

我读过有关持久订阅者的内容( http://activemq.apache.org/how-do-durable-queues-and-topics-work.htmlVirtual topics/queues and durability )。这似乎符合我的问题描述,并且在进行一些实现之后,一切似乎都按照我最初的预期进行。

什么会造成困惑

然后我读到了订阅恢复政策 ( http://activemq.apache.org/subscription-recovery-policy.html )。这是我应该配置的东西还是我完全误解了某些东西?例如,如果我想存储指定数量的消息,我应该配置 FixedCountSubscriptionRecoveryPolicy 还是应该查看一些 pendingMessageLimitStrategy

最佳答案

第一个问题是,当虚拟主题的主要目的是发布到主题(例如 VirtualTopic.FOO),然后在匹配的过滤器值上创建队列消费者时,为什么要在虚拟主题的主题部分上使用持久主题订阅(例如 Consumer.A.VirtualTopic.FOO) ?

关于恢复策略,它们仅适用于主题订阅,与持久主题订阅不同。对于普通的旧主题订阅,发送到主题的消息仅在该订阅连接时保留在该订阅的代理中,一旦它删除该订阅正在使用的所有消息都将被删除。订阅恢复策略的作用是创建一个可配置的缓存,允许创建主题订阅并重播发送到匹配主题的消息。对于持久主题订阅来说这是不必要的,因为每当订阅者离线时,发送到其订阅的主题的消息都会存储在代理消息存储中。

只有在少数边缘情况下,恢复策略才能混合到持久主题订阅中,例如发送到标记为非持久的主题的消息或在第一次订阅时,可以从内存中恢复一些过去的消息并将其播放到新的持久订阅中,如下所示一种底漆,但这就是它们在耐用外壳中的全部用处。

无论如何,您最好按照创建队列消费者的方式使用虚拟主题,因为这种机制比持久主题订阅具有许多优势。 Virtual Destinations 上的 ActiveMQ 文档解释了这一切。

关于java - 在 ActiveMQ 中使用带有虚拟主题的持久订阅者,订阅恢复策略是否发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32411034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com