【问题标题】:ActiveMQ network of brokers with durable subscription topics具有持久订阅主题的代理的 ActiveMQ 网络
【发布时间】:2012-02-03 22:29:10
【问题描述】:

我的示例 JMS 布局有一点问题。

我在两台机器上有两个代理(A、B),它们通过网络连接器链接。这个想法是生产者可以发送到任何代理,消费者可以收听任何代理,并且发送到/接收的主题是全局可用的。

主题有两个持久的订阅者客户端(每台机器上一个),它们都将处理主题中的所有消息。我希望它是一个持久订阅,以便在必须重新启动进程时进程不会丢失任何工作负载。两个订阅者客户端都配置为具有故障转移代理 url,因此它们首先尝试连接到其 localhost 代理,如果对方不可用。客户端的故障转移似乎可以工作,但我在以下情况下发现了问题:

每个代理“A”和“B”都有一个连接的订阅者客户端生产者正在发送到“A”。代理“B”重新启动。 “B”的客户端注册连接丢失并切换到“A”。 'B' 再次出现,因为它自己已注册为 'A' 的持久订阅者,所以它获得了消息提要。它现在没有活跃的持久订阅者(“A”现在有 3 个,包括“B”),并且会不断堆积,直到达到其连接限制。

我的配置有错吗?这可能是我想要的吗?

干杯, 启

【问题讨论】:

    标签: activemq failover broker subscriber


    【解决方案1】:
    1. 您是否正在运行主从配置?
    2. 为什么您希望两个代理同时连接客户端?

    如果您使用故障转移连接字符串(标识其中的两个代理),您的消费者/生产者将使用 ActiveMQ 故障转移实现,并在需要时连接/重新连接到活动节点。我不认为有两个活动实例和活动客户端是一个好主意 - 除非你试图复制你的进程(在这种情况下不会同步)

    使两个节点(主节点和从节点)始终拥有您需要的相同持久数据
    将您的消息保存到两个节点都可以访问的同一位置。它可以是连接到单个数据库实例(可能在集群后面)的 JDBC 适配器,也可以是带有 KahaDB 共享网络文件夹的 NAS。

    【讨论】:

    • 它不是主从,而是一个 (activemq.apache.org/networks-of-brokers.html) 具有静态发现的代理网络。基础设施需求是我们在同一个盒子上拥有消费者和高流量生产者。如果代理失败,则应允许生产者作为例外通过网络连接到其他代理(如果返回,是否有办法将它们自动重新连接到原始代理?),消费者当然也应该这样做。然后有客户端应该连接到任何网络代理并从两个代理的生产者接收主题消息。
    • 为了让画面更清晰,我们有两台计算机,每台都有一些生产者和一个消费者,它们还以较低的速率和较少的负载向远程机器上的终端客户端生成消息。如果其中一台计算机出现故障,最终客户端应该可以轻松切换到另一台代理,并且仍然具有大部分功能。
    猜你喜欢
    • 2015-11-28
    • 2015-06-16
    • 2017-10-31
    • 1970-01-01
    • 2016-01-14
    • 2013-11-04
    • 2013-05-29
    • 2013-11-10
    • 2015-08-24
    相关资源
    最近更新 更多