[ 
https://issues.apache.org/jira/browse/CAMEL-18964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17682035#comment-17682035
 ] 

Claus Ibsen commented on CAMEL-18964:
-------------------------------------

camel.component.activemq.autowiredEnabled = false

> camel-activemq - JMS connection factory used if defined
> -------------------------------------------------------
>
>                 Key: CAMEL-18964
>                 URL: https://issues.apache.org/jira/browse/CAMEL-18964
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-activemq, camel-jms, camel-main
>    Affects Versions: 3.18.1, 3.20.1
>         Environment: camel-main, camel-activemq, camel-jms, jdk11, linux
>            Reporter: Christian Schubert-Huff
>            Priority: Minor
>
> We implemented an IBM-MQ to ActiveMQ bridge in camel-main, using 
> camel-activemq and camel-jms for IBM-MQ, very similar to the documented 
> [EIP|https://camel.apache.org/components/3.18.x/eips/messaging-bridge.html].
> This requires the definition of a custom connection factory, which is then 
> set as connection factory of the JMS component:
> {noformat}
> camel.beans.mqConnectionFactory = #class:com.ibm.mq.jms.MQConnectionFactory
> camel.beans.mqConnectionFactory.HOSTNAME= mqhost
> camel.component.jms.connection-factory = #bean:mqConnectionFactory
> {noformat}
> Next, we configured the ActiveMQ component _without_ defining an explicit 
> connection factory, like this:
> {noformat}
> camel.component.activemq.broker-url = activemqhost
> camel.component.activemq.username = jay
> camel.component.activemq.password = unit
> {noformat}
> We expected this to just work. Instead, the ActiveMQ component began using 
> the mqConnectionFactory bean as its own connection factory, and the 
> application started throwing errors.
> This occurs regardless of the value of 
> {{camel.component.activemq.allow-auto-wired-connection-factory}} (which 
> defaults to true).
> This can be reproduced with the following unit test (which uses 
> ActiveMQConnectionFactory so it doesn't depend on proprietary JARs):
> {code:java}
> @Test
> public void testBindJmsConnectionFactory() {
>     Main main = new Main();
>     main.configure().addRoutesBuilder(new MyRouteBuilder());
>     // defining a connection factory for the JMS component
>     main.addProperty("camel.beans.jmscf", 
> "#class:org.apache.activemq.ActiveMQConnectionFactory");
>     main.addProperty("camel.beans.jmscf.brokerURL", "jmshost");
>     main.addProperty("camel.component.jms.connection-factory", "#bean:jmscf");
>     main.addProperty("camel.component.activemq.broker-url", "activemqhost");
>     main.addProperty("camel.component.activemq.username", "jay");
>     main.addProperty("camel.component.activemq.password", "unit");
>     
> main.addProperty("camel.component.activemq.allow-auto-wired-connection-factory",
>  "false");
>     main.start();
>     CamelContext camelContext = main.getCamelContext();
>     assertNotNull(camelContext);
>     ActiveMQConnectionFactory connectionFactory = 
> camelContext.getRegistry().lookupByNameAndType("jmscf", 
> ActiveMQConnectionFactory.class);
>     assertNotNull(connectionFactory);
>     
>     JmsComponent jmsComponent = camelContext.getComponent("jms", 
> JmsComponent.class);
>     assertNotNull(jmsComponent);
>     assertSame(connectionFactory, jmsComponent.getConnectionFactory());
>     ActiveMQComponent activeMqComponent = 
> camelContext.getComponent("activemq", ActiveMQComponent.class);
>     assertNotNull(activeMqComponent);
>     assertEquals("activemqhost", activeMqComponent.getBrokerURL());
>     assertEquals("jay", activeMqComponent.getUsername());
>     assertEquals("unit", activeMqComponent.getPassword());
>     assertNotSame(connectionFactory, 
> activeMqComponent.getConnectionFactory());
>     main.stop();
> }
> {code}
> There is a workaround, which is to define an explicit connection factory on 
> the ActiveMQ component:
> {noformat}
> camel.beans.amqcf = #class:org.apache.activemq.ActiveMQConnectionFactory
> camel.beans.amqcf.brokerURL = activemqhost
> camel.component.activemq.connection-factory = #bean:amqcf 
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to