从Camel版本2.10开始,支持CDI(JSR-299)和DI(JSR-330)。 这为在Java EE容器中以及独立Java SE或CDI容器中开发和部署Apache Camel项目提供了新的机会。 是时候尝试一下并熟悉它了。
骆驼到底是什么?
骆驼是一个集成框架。 有些人喜欢将其称为ESB-lite。 但最后,这是在集成项目中取得成功的非常注重开发人员和组件的方式。 您有80多个预构建组件可供选择,并且它们基本上包含了企业集成模式的完整覆盖,这些都是众所周知的并且可以使用。 考虑到所有这些,想出一个答案并不容易。 如果您需要一个,它可能是这样的:它是消息技术与路由的结合。 它将消息的起点和终点连接在一起,从而允许将消息从不同的源传输到不同的目的地。
我为什么在乎?
对于企业级软件,我显然感到很兴奋。 但始终喜欢更实用的解决方案。 关于何时使用Apache Camel以及随着在非常异构的平台上集成不同系统的需求不断增长,有一些不错的博客文章,拥有成熟的解决方案总是很方便的。 那里的大多数示例都是从引导完整的Camel魔术开始的,包括基于XML的Spring DSL及其强制性的依赖项。 那把一切都炸毁了,我不想接受。 知道必须有一种轻量级的方法(Camel-Core在12.13.2版中为2.5 MB),我正在研究如何自己引导它。 并使用其中的一些CDI魔术。
首先寻找想法的地方
显然是GitHub上的Java EE示例项目 。 一些不安定的社区成员收集了许多很棒的示例供您入门。 这里的最终目标是提供有关如何在Java EE伞中使用不同规范的参考。 但是甚至包括一些额外的内容,并展示了来自不同领域的示例,例如NoSQL,Twitter,Quartz Scheduling和最后但并非最不重要的Camel集成。 如果您按照最新的WildFly 8.1运行它,它将无法正常工作。 Camel的cdi扩展使其执行起来有些棘手,但是如相应的问题所述 ,有一种方法可以通过创建自定义否决扩展来摆脱模糊的CDI依赖。 该问题已提交给骆驼 ,我听说他们正在研究改善情况。 如果您想尝试该示例,请转到我的GitHub存储库并查找CamelEE7项目。
我是怎么做到的?
Bootstrap.java是一个@Singleton EJB,它在应用程序启动时加载(请记住, 在Java EE中有不同的启动方法 ),通过@Inject org.apache.camel.cdi.CdiCamelContext您可以访问Camel 。 这个小例子使用另一个HelloCamel bean展示了如何在CDI集成中使用有效负载。
确保查看CamelCdiVetoExtension.java及其在META-INF文件夹中的配置方式。 现在您可以开始了。 编码愉快。
和最后的最好
Camel 12.14 已经面世,计划于9月发布。 如果您有任何疑问或希望在其中看到,现在是时候发言了 !
即将推出的令人敬畏的新功能的摘录:
- 指标组件
- DSL提供休息服务
- 摇摇欲坠的组件
是时候变得兴奋了!
翻译自: https://www.javacodegeeks.com/2014/09/bootstrapping-apache-camel-in-java-ee7-with-wildfly-8.html