Mule 4.7 与 ActiveMQ 5.18.5:由于自动 ?socket.verifyHostname 参数而导致 JMSException '无效位置:故障转移' - 如何解决?

问题描述 投票:0回答:1

我正在将我的应用程序升级到 Mule 4.7 以启用 Java 17 兼容性。在此设置中,我使用 JMS 连接器版本 1.9.6 连接到 ActiveMQ Classic。我的 ActiveMQ Classic 依赖项包括 activemq-allactivemq-client,版本均为 5.18.5

问题

当我尝试部署应用程序时,遇到以下错误:

Caused by: javax.jms.JMSException: Could not create Transport. Reason: java.io.IOException: Invalid location: failover:(ssl://amq.org:61617)?maxReconnectAttempts=-1?socket.verifyHostName=false)

似乎

?socket.verifyHostname
会自动附加到连接字符串的末尾,导致出现
?
而不是
&
,这可能会导致问题。

可重现的示例

下面是我正在使用的连接配置的最小设置,以及重现错误的步骤。

连接配置(XML)

<jms:config name="ActivemqConnection" doc:name="JMS Config" doc:id="5perf46a-8b92-4c97-c980-37cda733f4b8" >
    <jms:active-mq-connection username="${username}" password="${password}" tlsContext="Config">
        <jms:xa-connection-pool minPoolSize="1" />
        <jms:factory-configuration brokerUrl="${broker.url}" />
    </jms:active-mq-connection>
    <jms:consumer-config >
        <jms:consumer-type >
            <jms:topic-consumer />
        </jms:consumer-type>
    </jms:consumer-config>
</jms:config>
broker.url=failover:(ssl://amq.org:61617)?maxReconnectAttempts=-1

重现步骤

  1. 在 Mule 4.7 项目中设置上述连接配置。

  2. 使用设置为 5.18.5 的

    activemq-all
    activemq-client
    版本。

  3. 使用 Java 17 在 Mule 4.7 中部署项目。

预期结果:连接字符串应正确运行,无需修改即可连接到 ActiveMQ。

实际结果:自动附加参数

?socket.verifyHostname
,导致以下错误:

尝试和尝试过的版本

我尝试了

activemq-client
activemq-all
库版本的各种组合来解决此问题,但问题仍然存在。我正在寻找有关正确使用版本的指导或防止自动附加
?socket.verifyHostname
的方法。

mule activemq-classic mulesoft mule-esb mule-connector
1个回答
0
投票

此版本的 JMS 连接器可能无法识别 URL 中已使用的参数。您可以尝试使用连接器中的重新连接策略替换 URL 中的 maxReconnectAttempts。

© www.soinside.com 2019 - 2024. All rights reserved.