org.apache.camel.ResolveEndpointFailedException: не удалось разрешить конечную точку из-за: org.apache.camel.Header пропущенного значения элемента - PullRequest
0 голосов
/ 03 июня 2019

В рамках обновления пружинных банок мы обновляем зависимости пружин с версии 2.5 до 4.3.0. также обновлены apache camel jar с версии 1.6.0 до 2.6.0 (camel-core, camel-jms, camel-spring)

конфигурация работала нормально до весеннего обновления, пожалуйста, дайте мне знать, если предоставленная информация не ясна.

ниже указаны текущие зависимости, используемые в нашем проекте.

пружина 4.3.0, Camel-Core-2.6.0, верблюд-jms-2.6.0, верблюжья весна-2.6.0, activemq-console-5.3.0.3a, activemq-core-5.3.0.3a, activemq-pool-5.3.0.3a, kahadb-fuse-5.3.0.3a, ActiveMQ-верблюд-плавкая 5.3.0.3a

Конфигурация контекста Camel выглядит следующим образом:

    <beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.3.0.xsd   
  http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">


    <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="deadLetterErrorHandler">
        <route>
            <from uri="embeddedActiveMQ:DYNAMIC.INTERNAL.QUEUE?concurrentConsumers=3&amp;maxConcurrentConsumers=100&amp;cacheLevelName=CACHE_CONSUMER&amp;maxMessagesPerTask=-1"/>
            <to uri="dynamicRouter"/>
        </route>
    </camelContext>

    <!-- Dynamic router bean delivers to external (message bus) component -->
    <bean id="dynamicRouter" class="com.messagebus.client.DynamicEmbeddedRouter">
        <constructor-arg index="0">
            <value>aiAuditAMQ</value>
        </constructor-arg>
    </bean>

</beans>

DynamicEmbeddedRouter.java

    import java.util.UUID;
 import org.apache.camel.Exchange;
 import org.apache.camel.Header;
 import org.apache.camel.Message;
 import org.apache.camel.RecipientList;

 public class DynamicEmbeddedRouter
 {
   private String endpoint;

   public DynamicEmbeddedRouter(String endpointName)
   {
    endpoint = (endpointName + ":");
   }

   @RecipientList
   public String routeMessage(@Header(name="JMSCorrelationID") String destName, Exchange exchange) {
     String destination = endpoint + destName;

     exchange.getIn().setHeader("JMSCorrelationID", UUID.randomUUID().toString());
     return destination;
   }
 }

ниже - ошибка, которую мы видим после обновления банок:

org.apache.camel.FailedToCreateRouteException: Failed to create route route at: >>> To[dynamicRouter] <<< in route: Route[[From[embeddedActiveMQ:DYNAMIC.INTERNAL.QUEUE?concurre... because of Failed to resolve endpoint: dynamicRouter due to: org.apache.camel.Header missing element value
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:759)
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:160)
        at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:701)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1623)
        at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1412)
        at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1321)
        at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:164)
        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:65)
        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1299)
        at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:203)
        at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
        ... 118 more
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: dynamicRouter due to: org.apache.camel.Header missing element value
        at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:449)
        at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:47)
        at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:175)
        at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:110)
        at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:116)
        at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:64)
        at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:58)
        at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:403)
        at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:174)
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:756)
        ... 129 more
Caused by: java.lang.annotation.IncompleteAnnotationException: org.apache.camel.Header missing element value
        at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:81)
        at com.sun.proxy.$Proxy85.value(Unknown Source)
        at org.apache.camel.component.bean.BeanInfo.createParameterUnmarshalExpressionForAnnotation(BeanInfo.java:619)
        at org.apache.camel.component.bean.BeanInfo.createParameterUnmarshalExpression(BeanInfo.java:599)
        at org.apache.camel.component.bean.BeanInfo.createMethodInfo(BeanInfo.java:303)
        at org.apache.camel.component.bean.BeanInfo.introspect(BeanInfo.java:219)
        at org.apache.camel.component.bean.BeanInfo.introspect(BeanInfo.java:196)
        at org.apache.camel.component.bean.BeanInfo.<init>(BeanInfo.java:94)
        at org.apache.camel.component.bean.BeanProcessor.<init>(BeanProcessor.java:56)
        at org.apache.camel.component.bean.BeanProcessor.<init>(BeanProcessor.java:60)
        at org.apache.camel.spring.SpringCamelContext.convertBeanToEndpoint(SpringCamelContext.java:193)
        at org.apache.camel.impl.DefaultCamelContext.createEndpoint(DefaultCamelContext.java:1981)
        at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:441)
        ... 138 more

Пожалуйста, помогите мне исправить эту ошибку.

...