首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apache-camel rabbitmq ssl集成不起作用

apache-camel rabbitmq ssl集成不起作用
EN

Stack Overflow用户
提问于 2020-01-10 19:50:41
回答 1查看 394关注 0票数 0

我们用阿帕奇-骆驼来连接兔子。现在,我们计划使用https连接rabbitmq。我执行了一些步骤,以便通过以下步骤将rabbitmq启用为https

https://www.rabbitmq.com/ssl.html

现在在我的代码中我们正在使用。

代码语言:javascript
复制
rabbitmq://host:port/exchange?autoAck=false&autoDelete=false&password=test&prefetchCount=1&queue=testqueue&sslProtocol=TLSv1.2&username=test

如果我们禁用拉比中的同侪验证,这是很好的。但是,如果我想启用对等验证,那么我需要通过KeyManager和信任库。不知道如何传递这些细节。我可以看到文档中说要使用connectionFactory作为

使用自定义RabbitMQ连接工厂。设置此选项时,所有连接选项(connectionTimeout,requestedChannelMax…))在URI上设置的不使用​

当我把它作为查询参数的一部分时,我得到了以下错误..

代码语言:javascript
复制
ERROR [2020-01-10 19:29:12,030] io.dropwizard.cli.ServerCommand: Unable to start server, shutting down                                                                                                 
! org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: com.rabbitmq.client.ConnectionFactory@44f0ff2b of type: com.rabbitmq.client.ConnectionFactory                      
! at org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:173)                                                                                                             
! at org.apache.camel.util.EndpointHelper.resolveReferenceParameter(EndpointHelper.java:326)                                                                                                           
! at org.apache.camel.util.EndpointHelper.resolveReferenceParameter(EndpointHelper.java:308)                                                                                                           
! at org.apache.camel.impl.DefaultComponent.resolveAndRemoveReferenceParameter(DefaultComponent.java:415)                                                                                              
! at org.apache.camel.impl.DefaultComponent.resolveAndRemoveReferenceParameter(DefaultComponent.java:394)                                                                                              
! at org.apache.camel.component.rabbitmq.RabbitMQComponent.createEndpoint(RabbitMQComponent.java:62)                                                                                                   
! at org.apache.camel.component.rabbitmq.RabbitMQComponent.createEndpoint(RabbitMQComponent.java:32)                                                                                                   
! at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:116)                                                                                                                  
! at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:631)                                                                                                               
! ... 33 common frames omitted                                                                                                                                                                         
! Causing: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: rabbitmq://host:port/exchangeName?autoAck=false&autoDelete=false&connectionFactory=com.rabbitmq.c
lient.ConnectionFactory%4044f0ff2b&password=test&prefetchCount=1&queue=testQueue&sslProtocol=TLSv1.2&username=test due to: No bean could be found in the registry for: com.rabbitmq.client.Connec
tionFactory@44f0ff2b of type: com.rabbitmq.client.ConnectionFactory                                                                                                                                    
! at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:678)                                                                                                               
! at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80)                                                                                                         
! at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:219)                                                                                                                  
! at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:112)                                                                                                           
! at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:118)                                                                                                           
! at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:69)                                                                                                                     
! at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:94)                                                                                                                
! at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1278)                                                                                                                       
! at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:204)                                                                                                                        
! ... 25 common frames omitted                                                                                                                                                                         
! Causing: org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[rabbitmq://10.65.226.201:5671/preValidat... because of Failed to resolve endpoint: rabbitmq://host:port/exchangeName?autoAck=false&autoDelete=false&connectionFactory=com.rabbitmq.c
lient.ConnectionFactory%4044f0ff2b&password=test&prefetchCount=1&queue=testQueue&sslProtocol=TLSv1.2&username=test due to: No bean could be found in the registry for: com.rabbitmq.client.ConnectionFactory@44f0ff2b of type: com.rabbitmq.client.ConnectionFactory 

如何将connectionFactory传递给rabbitmq中的uri。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-21 03:27:43

为了传递ConnectionFactory对象实例,我们需要对对象进行查找,这可以通过将对象放入注册表、创建注册表和将连接放入注册表来实现。有关详细信息,camel & Rabbitmq自定义ConnectionFactory

代码语言:javascript
复制
    SimpleRegistry simpleRegistry = new SimpleRegistry();
    String beanName = "rabbitConnectionFactory";
    simpleRegistry.put(beanName, connectionFactory);
    CamelContext camelContext = new DefaultCamelContext(simpleRegistry);

然后创建rabbitmq url,它将引用connectionFactory。

代码语言:javascript
复制
"rabbitmq:/jobProgress?autoAck=false&autoDelete=false&prefetchCount=1&prefetchEnabled=true" +
            "&queue=jobProgress&connectionFactory=#rabbitConnectionFactory";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59688170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档