Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-10226

camel-jms ignores connection pool settings in spring-boot deployment

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.18.0
    • Component/s: camel-jms
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      The camel jms-component (particularly the camel-activemq, that inherits from it) cannot be fully configured in a spring-boot environment.

      When using eg. the spring-xml configuration (spring-boot properties are not yet available in the activemq component):

      <bean id="amq" class="org.apache.activemq.camel.component.ActiveMQComponent">
          <property name="userName" value="XXX"/>
          <property name="password" value="YYY"/>
          <property name="brokerURL" value="ZZZ"/>
      </bean>
      

      The properties userName, password and brokerURL are simply ignored.

      The reason is that spring-boot defines its own connection factory that is automatically bound to the application context when ActiveMQ is on the classpath (https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryConfiguration.java#L41-L71).

      And the JMS component is programmed to use any connection factory that is available in the spring application context: https://github.com/apache/camel/blob/master/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java#L151-L155.

      This prevents the configuration object to create a new connection factory with the specified properties, so they are ignored. The component always use an in-memory broker (whenever the creation of the JmsConfiguration object is not overridden by the user).

      I can work to fix this behavior, but I need to know if the lookup in the application context (it is located in the camel source, even if it affects activemq) is historically related to some use case or it can be safely removed.

        Attachments

          Activity

            People

            • Assignee:
              nferraro Nicola Ferraro
              Reporter:
              nferraro Nicola Ferraro
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: