apache -camel rabbitmq ssl интеграция не работает - PullRequest
0 голосов
/ 10 января 2020

Мы используем apache -камеру для соединения с rabbitmq. Теперь мы планируем подключить rabbitmq, используя https. Я выполнил шаги, чтобы включить rabbitmq для https, используя

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

Теперь в моем коде мы используем.

rabbitmq://host:port/exchange?autoAck=false&autoDelete=false&password=test&prefetchCount=1&queue=testqueue&sslProtocol=TLSv1.2&username=test

Это работает хорошо, если мы отключаем проверку сверстников в rabbimq. Но если я хочу включить одноранговую проверку, мне нужно передать KeyManager и хранилище доверенных сертификатов. Не уверен, как можно передать эту информацию. Я вижу документацию, в которой говорится, что для использования connectionFactory

Для использования фабрики пользовательских соединений RabbitMQ. Когда эта опция установлена, все опции соединения (connectionTimeout, requiredChannelMax…), установленные на URI, не используются

, когда я дал это как часть параметра запроса, я получил ошибку ниже.

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.

1 Ответ

0 голосов
/ 21 января 2020

Чтобы передать экземпляр объекта ConnectionFactory, нам нужно выполнить поиск объекта. Этого можно достичь, поместив объект в реестр, создайте реестр и поместите соединение в реестр. Для получения подробной информации Camel & Rabbitmq Custom ConnectionFactory

    SimpleRegistry simpleRegistry = new SimpleRegistry();
    String beanName = "rabbitConnectionFactory";
    simpleRegistry.put(beanName, connectionFactory);
    CamelContext camelContext = new DefaultCamelContext(simpleRegistry);

Затем создайте URL rabbitmq, который будет ссылаться на connectionFactory.

"rabbitmq:/jobProgress?autoAck=false&autoDelete=false&prefetchCount=1&prefetchEnabled=true" +
            "&queue=jobProgress&connectionFactory=#rabbitConnectionFactory";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...