2017-01-24 2 views
0

Я разрабатываю приложение, которое читает сообщения из очереди Kafka и обрабатывает их, создавая электронную почту и отправляя ее.FailedToCreateRouteException Развертывание приложения Camel-CDI для Wildfly 8.2

Мне удалось получить простой маршрут верблюда, работающий в автономном приложении java, однако, когда я его упаковываю, используя CDI и Wildfly 8.2, он не удается развернуть. Я следую инструкциям отсюда: camel CDI Properties example Я использовал пример в качестве шаблона для своего приложения. Я использую Wildfly 8.2.0, Camel 2.18.1, Kafka 0.10.1.1

Что я делаю неправильно? Я не понимаю ошибку «org.apache.camel.FailedToCreateRouteException: Не удалось создать маршрут. Отправлять по электронной почте-уведомлять маршрут: Маршрут (Deep-email-notify-route) [[Из [нет uri или ref поставлено! .. . из-либо 'Ури' или 'реф' должно быть указано:" [email protected]

Это большая часть моего кода:

@ApplicationScoped 
public class OrderEmailApplication { 

/** The logger. */ 
private static Logger logger =LogManager.getLogger(OrderEmailRoute.class); 

public OrderEmailApplication() {} 

@ContextName("OrderNotifications") 
static class OrderEmailRoute extends RouteBuilder { 

    @Uri("kafka://{{deep.notify.kafka.server}}?topic={{deep.notify.order.topics}}&groupId={{deep.notify.order.groupId}}&"+ 
       "keyDeserializer=org.apache.kafka.common.serialization.StringDeserializer&" + 
       "valueDeserializer=org.apache.kafka.common.serialization.StringDeserializer") 
    Endpoint kafkaEndpoint; 

    @Uri("file:///home/whomer/tmp/Notify/deadMessages") 
    private Endpoint deadLetter; 


    @BeanInject 
    BulkEmailProcessor bulkEmailProcessor; 

    @BeanInject 
    FailedMessageEnrichmentProcessor failedEmailEnrichement; 


    @Override 
    public void configure() throws Exception { 
     errorHandler(defaultErrorHandler().maximumRedeliveries(0)); 

     from(kafkaEndpoint).routeId("Deep-email-notify-route") 
     .unmarshal().json(JsonLibrary.Jackson, LinkedHashMap.class) 
     .bean("velocityBean") 
     .process(bulkEmailProcessor) 
     .marshal().json(JsonLibrary.Jackson, Map.class) 
     .to("Log:?level=DEBUG"); 

     from("direct:getTemplate").to("velocity://dummy"); 
    } 
} 

@Named("velocityBean") 
static class VelocityBean { 
    @Uri("direct:getTemplate") 
    private ProducerTemplate template; 

    public void process(Exchange exchange) { 
     // removed for brevity 
    } 

} 
@Produces 
@Named("properties") 
// "properties" component bean that Camel uses to lookup properties 
PropertiesComponent properties(PropertiesParser parser) { 
    PropertiesComponent component = new PropertiesComponent(); 
    // Use DeltaSpike as configuration source for Camel CDI 
    component.setPropertiesParser(parser); 
    return component; 
} 

// PropertiesParser bean that uses DeltaSpike to resolve properties 
static class DeltaSpikeParser extends DefaultPropertiesParser { 

    @Override 
    public String parseProperty(String key, String value, Properties properties) { 
     return ConfigResolver.getPropertyValue(key); 
    } 
} 

}

Это след трассировки:

14:51:37,674 INFO [org.apache.camel.cdi.CdiCamelExtension] (MSC service thread 1-4) Camel CDI is starting Camel context [OrderNotifications] 
14:51:37,680 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-4) Apache Camel 2.18.1 (CamelContext: OrderNotifications) is starting 
14:51:37,682 INFO [org.apache.camel.management.ManagedManagementStrategy] (MSC service thread 1-4) JMX is enabled 
14:51:37,821 INFO [org.apache.camel.impl.DefaultRuntimeEndpointRegistry] (MSC service thread 1-4) Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000) 
14:51:37,827 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-4) Apache Camel 2.18.1 (CamelContext: OrderNotifications) is shutting down 
14:51:37,849 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-4) Apache Camel 2.18.1 (CamelContext: OrderNotifications) uptime 0.169 seconds 
14:51:37,849 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-4) Apache Camel 2.18.1 (CamelContext: OrderNotifications) is shutdown in 0.022 seconds 
14:51:37,859 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."NotificationService.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."NotificationService.war".WeldStartService: Failed to start service 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_51] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_51] 
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_51] 
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 1 exceptions: 
Exception 0 : 
org.apache.camel.FailedToCreateRouteException: Failed to create route Deep-email-notify-route: Route(Deep-email-notify-route)[[From[no uri or ref supplied!... because of Either 'uri' or 'ref' must be specified on:  [email protected] 
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:201) 
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1008) 
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3397) 
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3128) 
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:182) 
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2957) 
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2953) 
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2976) 
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2953) 
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2920) 
at org.apache.camel.impl.DefaultCamelContext$Proxy$_$$_WeldClientProxy.start(Unknown Source) 
at org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(CdiCamelExtension.java:422) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:90) 
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:271) 
at org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:121) 
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:258) 
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:237) 
at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:174) 
at org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:133) 
at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:107) 
at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:54) 
at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35) 
at org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28) 
at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:439) 
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90) 
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:93) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: Either 'uri' or 'ref' must be specified on: [email protected] 
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:136) 
at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:69) 
at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:90) 
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1051) 
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196) 
... 35 more 

at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:37) 
at org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28) 
at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:439) 
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90) 
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:93) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
... 3 more 

ответ

0

OOPS. Ошибка программиста! Главной проблемой оказались инъекции Endpoint.

Вместо @Uri ("kafka: ...") Конечная точка фубар; Впрыск должен быть:

@EndpointInjection (uri = "kafka: ...") Конечная точка фубар;

Смежные вопросы