我想将 gitlab-runner 上运行的回归测试中的一些消息推送到 ActiveMQ Classic。我在集群上拥有所有必要的规则。我按照这个例子,但我仍然收到异常。我正在使用 Java 版本 Zulu17.34+19-CA (build 17.0.3+7-LTS) 和 org.apache.activemq.activemq-pool 5.15.1。我的 Java 客户端配置如下所示:
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(prop("activeMQUrl"));
connectionFactory.setUserName(prop("activeMQUser"));
connectionFactory.setPassword(prop("activeMQPassword"));
PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory);
pooledConnectionFactory.setMaxConnections(10);
SimpleActiveMqProducer activeMq =
new SimpleActiveMqProducer(pooledConnectionFactory,
prop("activeMQUser"),
prop("activeMQPassword"));
activeMq
.toQueue(prop("myQueue"))
.send(objectToJson(myMessage))
特性:
myQueue=Consumer.my-consumer
activeMQUrl=failover:(nio+ssl://some.box.on.aws1:61617,nio+ssl://some.box.on.aws2:61617)?randomize=false&jms.optimizeAcknowledge=true&maxReconnectDelay=150&startupMaxReconnectAttempts=5
activeMQUser=root
activeMQPassword=root
错误:
15:39:20.861 [ActiveMQ Task-1] ERROR - Could not set property host on SSLSocket[hostname=null, port=0, Session(1689349160860|SSL_NULL_WITH_NULL_NULL)]
java.lang.IllegalAccessException: class org.apache.activemq.util.IntrospectionSupport cannot access class sun.security.ssl.SSLSocketImpl (in module java.base) because module java.base does not export sun.security.ssl to unnamed module @2dc9b0f5
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown Source)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.activemq.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:181)
at org.apache.activemq.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:155)
at org.apache.activemq.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:140)
at org.apache.activemq.transport.tcp.SslTransport.(SslTransport.java:72)
at org.apache.activemq.transport.tcp.SslTransportFactory.createTransport(SslTransportFactory.java:122)
at org.apache.activemq.transport.TransportFactory.doCompositeConnect(TransportFactory.java:138)
at org.apache.activemq.transport.TransportFactory.compositeConnect(TransportFactory.java:91)
at org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:1011)
at org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:148)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
有人可以帮我吗?
您应该使用最新的 ActiveMQ Classic 客户端依赖项,目前为 5.18.2。版本 5.15.1(您现在正在使用的)大约在 6 年前发布,即 2017 年 9 月。我不相信它支持在 JDK 17 上运行。