Конечная точка activemq при весенней загрузке ClassNotFoundException - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь перейти к весенней загрузке, чтобы получить более чистые зависимости в приложении, использующем Camel и ActiveMQ. Раньше я настраивал конечную точку activemq в файле XML:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jms="http://www.springframework.org/schema/jms"
    xmlns:amq="http://activemq.apache.org/schema/core"
    xsi:schemaLocation="http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.5.0.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<context:property-placeholder location="classpath:config.properties"/>

<bean id="jmsConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${gatewaybroker}"/>
</bean>

<bean id="pooledJmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start"  destroy-method="stop">
    <property name="maxConnections" value="8" />
    <property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="jmsConfig"
   class="org.apache.camel.component.jms.JmsConfiguration">
   <property name="connectionFactory" ref="pooledJmsConnectionFactory"/>
   <property name="concurrentConsumers" value="10"/>
</bean>

<!-- create a Camel ActiveMQ component -->
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig"/>

    <!-- if we are using transacted then enable CACHE_CONSUMER (if not using XA) to run faster
         see more details at: http://camel.apache.org/jms
    <property name="transacted" value="true"/>
    <property name="cacheLevelName" value="CACHE_CONSUMER" />
    -->   
</bean>   
</beans>

, а затем вызывал маршруты, используя эту конечную точку ActiveMQ:

from("activemq:queue:configuratelearningmodule")
    .routeId(routeid)
    .autoStartup(false)
    .process(       
        new Processor(){                    
            public void process(Exchange exchange) throws Exception {
//                         etc....                          

Теперь я создал пружину -погрузка приложения и постепенная миграция. Я не нашел способа получить доступ к конечной точке "activemq" с помощью автоконфигурированной подпружиненной загрузки activemq, поэтому я попытался сохранить свой файл конфигурации xml. В конце концов, я могу настроить себя как конечную точку activemq, и я использую только spring-boot, чтобы не беспокоиться о конфликтах версий между всеми элементами (jpa / hibernate, spring, camel, activemq, mqtt и др. c ... )

Однако я получаю это сообщение:

An exception occured while executing the Java class. 
Error creating bean with name 'dataSourceInitializerPostProcessor':
Unsatisfied dependency expressed through field 'beanFactory'; 
nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: 
Error loading class [org.apache.activemq.camel.component.ActiveMQComponent] 
for bean with name 'activemq' defined in class path resource [jmsconfig.xml]: 
problem with class file or dependent class; 
nested exception is java.lang.NoClassDefFoundError: org/apache/camel/impl/HeaderFilterStrategyComponent

На странице миграции Camel 3.1 сообщается, что activemq-camel был перемещен в camel, поэтому я настраиваю pom.xml Компонент camel-activemq, но это ничего не меняет.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-spring-boot-starter</artifactId>
  <version>3.1.0</version>
</dependency>

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-camel</artifactId>
</dependency>

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-pool</artifactId>
</dependency>       

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-activemq</artifactId>
  <version>3.1.0</version>
</dependency>        

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-core</artifactId>
  <version>3.1.0</version>
</dependency>

Есть идеи, как заставить конечную точку activemq работать в режиме весенней загрузки?

1 Ответ

0 голосов
/ 11 марта 2020

вы можете попробовать использовать

<dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-all</artifactId>
        <version>5.15.2</version>
</dependency>

Привет

...