我正在尝试使用带有rabbitmq的apache camel(camel-spring-boot - 2.20.2)并创建路径。
当我使用不安全的RabbitMQ(无SSL)时,它确实工作正常,但是当我尝试使用SSL连接到RabbitMQ时,它根本没有连接到队列。 我正在使用Apache Camel页面上给出的“connectionFactory”选项。此connectionFactory对象具有所有正确的参数集(useSslProtocol,用户名,密码等)。
请注意,connectionFactory已正确填充,因为我可以使用它以另一种方式连接(在SimpleMessageListenerContainer上的setConnectionFactory中设置它)。但是对于Apache Camel,我遇到了问题。
java.io.IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:116) ~[amqp-client-4.1.0.jar!/:4.1.0] at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:112) ~[amqp-client-4.1.0.jar!/:4.1.0] at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:360)
〜[!AMQP的客户端 - 4.1.0.jar /:4.1.0] 在com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62) 〜[!AMQP的客户4.1.0.jar /:4.1.0] 引起:com.rabbitmq.client.ShutdownSignalException:连接错误 at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) 〜[!AMQP的客户4.1.0.jar /:4.1.0] * * 引起:java.io.EOFException at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:290) 〜[:?1.8.0_161] 在com.rabbitmq.client.impl.Frame.readFrom(Frame.java:91)〜[amqp-client-4.1.0.jar!/:4.1.0]
在浏览更多内容时,我遇到了这个问题: Apache Camel SSL RabbitMQ,但这似乎有点旧,所以可能不再相关了。
请指教。这对我们来说已成为一种阻碍。
我做了一些更改......我意识到我没有正确使用URL中的connectionFactory - 按照这个链接 - How to set two RabbitMQ connections for the same Camel RouteBuilder configure method,可以继续......但是现在,我得到了这个(看起来我取得了一些进展,但仍然面对下面的事情)。
java.net.ConnectException:连接被拒绝(连接被拒绝)at java.net.PlainSocketImpl.socketConnect(Native Method)〜[?:1.8.0_161] 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 〜[?:1.8.0_161] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 〜[?:1.8.0_161] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 〜[?:1.8.0_161] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) java.net.Socket.connect中的〜[?:1.8.0_161](Socket.java:589) 〜[?:1.8.0_161] at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673) 〜[?:1.8.0_161] at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:50) 〜[amqp-client-4.1.0.jar!/:4.1.0] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:918) 〜[amqp-client-4.1.0.jar!/:4.1.0] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:870) 〜[amqp-client-4.1.0.jar!/:4.1.0] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:828) 〜[amqp-client-4.1.0.jar!/:4.1.0] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:996) 〜[amqp-client-4.1.0.jar!/:4.1.0] at org.apache.camel.component.rabbitmq.RabbitMQEndpoint.connect(RabbitMQEndpoint.java:248) 〜[camel-rabbitmq-2.20.2.jar!/:2.20.2] at org.apache.camel.component.rabbitmq.RabbitMQConsumer.openConnection(RabbitMQConsumer.java:64) 〜[camel-rabbitmq-2.20.2.jar!/:2.20.2] at org.apache.camel.component.rabbitmq.RabbitMQConsumer.getConnection(RabbitMQConsumer.java:75) 〜[camel-rabbitmq-2.20.2.jar!/:2.20.2] at org.apache.camel.component.rabbitmq.RabbitConsumer。(RabbitConsumer.java:55) [camel-rabbitmq-2.20.2.jar!/:2.20.2] at org.apache.camel.component.rabbitmq.RabbitMQConsumer.createConsumer(RabbitMQConsumer.java:120) [骆驼的RabbitMQ-2.20.2.jar /:2.20.2]
路线如下所示 - connectionFactory对象已正确填充。它在应用程序和工作中使用(使用常规Spring方式连接到RabbitMQ)
final CamelContext camelContext = getContext();最后 org.apache.camel.impl.SimpleRegistry registry = new org.apache.camel.impl.SimpleRegistry();最后 org.apache.camel.impl.CompositeRegistry compositeRegistry = new org.apache.camel.impl.CompositeRegistry(); compositeRegistry.addRegistry(camelContext.getRegistry()); compositeRegistry.addRegistry(注册表); ((org.apache.camel.impl.DefaultCamelContext) camelContext).setRegistry(compositeRegistry); registry.put(“connectionFactoryWorker”,connectionFactory);
从( “RabbitMQ的:: 5671 /队列=安培; connectionFactory的=#connectionFactoryWorker”)。日志(“接收 消息“);