【发布时间】:2017-08-29 17:46:38
【问题描述】:
根据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 。 提前致谢!
【问题讨论】:
-
不太熟悉 Camel,但您是在谈论 CDI 2.0 异步事件吗?
-
不是,我知道我可以编写一个 EJB 来异步触发事件。据我了解,EJB 池中的一个线程然后等待事件被处理。 Camel 已经提供了一个异步路由引擎和“asyncSendBody”方法。我宁愿直接使用它(如上面的工作代码),但使用更好的 CdiEventEndpoint 。更准确地说,我的项目中有工作代码,它使用 ProducerTemplate 对 CDI 事件进行排队(几乎是第一个 Code sn-p)。我想将它们重构为第二个 sn-p,但在某些方面保持第三个 sn-p 的异步性质。
标签: java apache-camel cdi java-ee-7 apache-camel-cdi