camel-cdi 中的异步事件

Asynchronous events in 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 。 提前致谢!

我从来没有真正测试过这个,但是从文档中你应该可以用 "seda" 替换 "direct" 来实现异步:

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

在你澄清之后,我认为你可能正在寻找 camel 中的异步路由引擎,它可以通过将 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("...")