Асинхронные события в Camel-CDI

Согласно http://camel.apache.org/cdi.html

@Inject
@Uri("direct:event")
ProducerTemplate producer;

void observeCdiEvents(@Observes String event) {
   producer.sendBody(event);
}

from("direct:event")
 .log("CDI event received: ${body}");

эквивалентно

@Inject
CdiEventEndpoint<String> cdiEventEndpoint;

from(cdiEventEndpoint).log("CDI event received: ${body}");

Как мне преобразовать пример с

 producer.asyncSendBody(...)

использовать CdiEventEndpoint . Заранее спасибо!

1 ответ

Решение

На самом деле я никогда не проверял это, но из документов вы должны заменить "прямой" на "седа", чтобы перейти к асычу:

@Inject
@Uri("seda:event")
ProducerTemplate producer;
...

После вашего разъяснения, я думаю, что вы, возможно, ищете механизм асинхронной маршрутизации на верблюде, который будет использоваться путем вставки threads() в настройку java dsl:

from("direct:event") // using a producer "direct:event" in an @Observes method
    .threads()
    .log("...")

или относительно установки события cdi

from(cdiEventEndpoint) // using @Inject CdiEventEndpoint<String> cdiEventEndpoint
    .threads()
    .log("...")
Другие вопросы по тегам