无法通过骆驼设置中的quarkus本机构建中的ActiveMQ配置

发布于 2025-01-31 16:58:20 字数 455 浏览 4 评论 0原文

在Quarkus Native Build和Camel Setup中传递经纪人URL中的ActiveMQ属性时,我会遇到以下错误。

javax.jms.JMSException: Could not create Transport. Reason: javax.jms.JMSException: Could not create Transport. Reason: java.lang.IllegalArgumentException: Invalid connect parameters: {transport.initialReconnectDelay=1000, transport.timeout=5000, transport.maxReconnectAttempts=5}

Invalid socket parameters: {enabledProtocols=TLSv1.2}, continuing to retry.

I am getting the following errors while passing ActiveMQ properties in the broker URL in Quarkus native build and Camel setup.

javax.jms.JMSException: Could not create Transport. Reason: javax.jms.JMSException: Could not create Transport. Reason: java.lang.IllegalArgumentException: Invalid connect parameters: {transport.initialReconnectDelay=1000, transport.timeout=5000, transport.maxReconnectAttempts=5}

Invalid socket parameters: {enabledProtocols=TLSv1.2}, continuing to retry.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撩起发的微风 2025-02-07 16:58:21

我发现了这个问题的根本原因。这与Quarkus Native的构建和反思有关。在启动时,该框架试图使用反射设置属性。将以下内容添加到ReflectConfig.json之后,一切都按预期工作。

"name": "org.apache.activemq.command.ConsumerInfo",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredClasses": true,
"allPublicClasses": true

"name": "org.apache.activemq.transport.failover.FailoverTransport",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredClasses": true,
"allPublicClasses": true

"name": "sun.security.ssl.SSLSocketImpl",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredClasses": true,
"allPublicClasses": true 

I found the root cause of this issue. This is related to Quarkus native build and reflection. At startup, the framework tries to set properties using reflection. After adding the following into reflectconfig.json, everything is working as expected.

"name": "org.apache.activemq.command.ConsumerInfo",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredClasses": true,
"allPublicClasses": true

"name": "org.apache.activemq.transport.failover.FailoverTransport",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredClasses": true,
"allPublicClasses": true

"name": "sun.security.ssl.SSLSocketImpl",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredClasses": true,
"allPublicClasses": true 
∞琼窗梦回ˉ 2025-02-07 16:58:21

对于那些有兴趣使用Quarkus本机模式使用Vanilla ActiveMQ 5客户端的人,例如,

<dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-pool</artifactId>
        <version>5.18.0</version>
</dependency>

配置工作:

SRC/MAIN/RESOSDER/REFLECTION-CONFIG.JSON

[
{
    "name": "org.apache.commons.pool2.impl.DefaultEvictionPolicy",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.openwire.v12.MarshallerFactory",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.openwire.OpenWireFormatFactory",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.transport.tcp.TcpTransportFactory",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.transport.failover.FailoverTransport",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "sun.security.ssl.SSLSocketImpl",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
}]

/MAIN/MAIN/RESOSDER/RESOSDER CONFIG.JSON SRC/MAIN/RESISTR/RESISTR

{
  "resources": [
    {
      "pattern": ".*/services/org/apache/activemq.*"
    }
  ]
}

SRC 。特性

quarkus.native.additional-build-args =-H:ReflectionConfigurationFiles=reflection-config.json, -H:ResourceConfigurationFiles=resources-config.json

For those who are interested in using vanilla Activemq 5 client with quarkus native mode, e.g.

<dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-pool</artifactId>
        <version>5.18.0</version>
</dependency>

following configuration works:

src/main/resources/reflection-config.json

[
{
    "name": "org.apache.commons.pool2.impl.DefaultEvictionPolicy",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.openwire.v12.MarshallerFactory",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.openwire.OpenWireFormatFactory",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.transport.tcp.TcpTransportFactory",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "org.apache.activemq.transport.failover.FailoverTransport",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
},
{
    "name": "sun.security.ssl.SSLSocketImpl",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredClasses": true,
    "allPublicClasses": true
}]

src/main/resources/resources-config.json

{
  "resources": [
    {
      "pattern": ".*/services/org/apache/activemq.*"
    }
  ]
}

src/main/resources/application.properties

quarkus.native.additional-build-args =-H:ReflectionConfigurationFiles=reflection-config.json, -H:ResourceConfigurationFiles=resources-config.json
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文