Асинхронные события в 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("...")