首页 > 解决方案 > ActiveMQ 消息似乎从一个代理中出列,但未到达代理网络中的另一个

问题描述

我有一个代理网络,其中消息从 Java 应用程序生成到现场的小型本地代理,然后有一个静态网络目标,用于指向代理(在 AWS 中)的队列,该代理有一个消费者坐在所有远程代理的队列。

如果连接出现任何中断,远程代理将重新连接成功。问题是在某些情况下,远程代理将重新连接,远程代理上的队列似乎会增加出队计数,但是它打算转发到的中央代理并没有显示出增加的队列队列。

在远程端排队的消息是 Persistent = YES,priority = 4。如果我在代理上手动添加 Persistent = Yes 的消息,则会出现相同的行为。如果我设置persistent = NO,则消息成功到达另一端。如果我重新启动代理,持久消息会再次流动(尽管它认为已成功发送的消息会丢失)。

什么情况会导致这种消息丢失,是否有可以调整的配置选项来解决这个问题?

远程代理的配置是标准 AMQ 安装,定义了以下网络连接器:

        <networkConnectors>
            <networkConnector
                    uri="${X.remoteMsgURI}"
                    staticBridge="true"
                    dynamicOnly="false"
                    alwaysSyncSend="true"
                    userName="${X.remoteUsername}"
                    password="${X.remotePassword}"
            >
                <staticallyIncludedDestinations>
                    <queue physicalName="cloud.${X.environment}.queue.${X.queuebase}"/>
                </staticallyIncludedDestinations>
            </networkConnector>
        </networkConnectors>

静态遥控器的连接字符串是:

remoteMsgURI=static:(failover:(ssl:/X-1.mq.eu-west-2.amazonaws.com:61617?wireFormat.maxInactivityDuration=30000,ssl://X-2.amazonaws.com:61617?wireFormat.maxInactivityDuration=30000))

标签: activemq

解决方案


推荐阅读