Enterprise Java具有不同的风格和观点。 从简单的平台技术开始,即众所周知的Java EE,再到不同的框架和集成方面,最后是涉及以数据为中心的用户界面或特定可视化效果的用例。 Java EE本身无法解决的最突出的问题是“集成”。 有许多来自知名供应商的产品,它们可以解决各种集成问题并承诺提供完整的解决方案。 作为开发人员,您不时需要的只是一个可行的解决方案。 对于系统集成而言,这是Java EE开发人员的终极“入门资源”。
一点整合理论
集成挑战并不是什么新鲜事物。 由于存在不同类型的系统,并且需要将其数据组合到另一个系统中,因此这一直是中心主题。 Gregor Hohpe和Bobby Woolf开始收集用于解决客户集成问题的一组基本模式。 这些企业集成模式 (EIP)可以被视为集成的圣经。 它尝试通过定义65种集成模式来找到有关异步消息传递体系结构的通用词汇表和知识体系。 Forrester将其称为“ EAI的核心语言”。
什么是Apache Camel?
Apache Camel为您提供了EIP的接口,基础对象,通常需要的实现,调试工具,配置系统以及许多其他帮助器,当您要实施解决方案以遵循EIP时,将为您节省大量时间。 这是一个完整的生产就绪框架。 但这并不能止于最初定义的65个模式 。 它扩展了150多个现成的组件 ,可解决端点或系统或技术集成方面的各种问题。 在较高的层次上,Camel由CamelContext组成,其中包含Component实例的集合。 组件本质上是Endpoint实例的工厂。 您可以在Java代码或IoC容器(例如Spring,Guice或CDI)中显式配置Component实例,也可以使用URI自动发现它们。
Java EE开发人员为什么要关心?
企业项目要求我们这样做。 处理各种系统集成一直是一个具有挑战性的话题。 您可以通过使用消息传递系统选择复杂的道路,并将其连接到您的应用程序中,然后自己实现一切,或者通过使用不同的产品走上繁重的道路。 从那时起,我一直是更实用的解决方案的粉丝。 这就是Camel的实际含义:相对轻巧,易于引导,并附带大量预构建的集成组件,使开发人员可以专注于解决其背后的业务需求。 无需学习新的API或工具。 Camel带有基于Java的Fluent API , Spring或Blueprint XML Configuration文件 ,甚至还有Scala DSL 。 因此,无论您是从哪一个基地跳下来的,您总会发现一些您已经知道的东西。
如何开始?
我懂了吗 想要试一试? 这也很容易。 根据您使用的框架和平台,您有不同的方式。 回顾帖子标题,本文将重点介绍Java EE。
因此,您可以做的第一件事就是自行引导骆驼。 您需要的只是核心骆驼依赖关系和cdi-camel依赖关系。 设置一个普通的Java EE 7 maven项目并添加这两个项目已足够。
<dependency><groupId>org.apache.camel</groupId><artifactId>camel-core</artifactId><version>${camel.version}</version>
</dependency>
<dependency><groupId>org.apache.camel</groupId><artifactId>camel-cdi</artifactId><version>${camel.version}</version>
</dependency>
接下来需要做的是找到一个注入第一个CamelContext的地方。
@InjectCdiCamelContext context;
注入所有内容后,您可以开始向其中添加路由。 在GitHub上的CamelEE7项目中可以找到更完整的示例。 只需叉子就可以了。 这将在随机的Java EE应用程序服务器上工作。 如果您已经在使用WildFly ,则还可以充分利用WildFly-Camel子系统 。
WildFly骆驼子系统
wildfly-camel的策略是,用户可以在WildFly已经支持的部署中“仅使用”骆驼核心/组件API。 换句话说,Camel应该在标准Java EE部署中“正常工作”。 二进制文件由平台提供。 部署无需担心模块/接线细节。
定义和部署骆驼上下文可以以不同的方式完成。 您可以在standalone-camel.xml服务器配置中直接定义上下文,也可以将其作为Web应用程序的一部分部署为带有预定义-camel-context.xml文件后缀的单个XML文件,也可以作为另一个WildFly支持的一部分进行部署部署为META-INF / jboss-camel-context.xml文件。
WildFly Camel测试套件使用WildFly Arquillian管理的容器。 这可以连接到已经运行的WildFly实例,或者在需要时启动独立服务器实例。 已经实现了许多测试增强器,使您可以将这些WildFly Camel特定类型注入Arquillian测试用例中。 您可以将CamelContextFactory或CamelContextRegistry注入为@ArquillianResource。
如果要开始使用它,可以更详细地看我的博客文章 。
寻找例子
如果您很兴奋,并且一切都准备就绪并且可以运行,那么现在该深入探讨一些示例了。 首先要看的是发行版中的示例目录 。 有一个您可能需要的所有示例。
最重要的用例之一是与ActiveMQ的紧密集成。 并假设您有一堆JMS消息需要转换为存储在文件系统中的文件:这是一项完美的Camel作业。 您需要配置ActiveMQ组件 ,而不是上面所看到的,它还允许使用Apache ActiveMQ将消息发送到JMS队列或主题,或者从JMS队列或主题使用消息。
以下代码向您展示了如何将JMS消息从test.queue队列转换为文件组件,该文件组件将使用它们并将它们存储到磁盘。
context.addRoutes(new RouteBuilder() {public void configure() {from("test-jms:queue:test.queue").to("file://test");}});
想像一下自己做。 需要更多复杂的示例吗? 与Twitter集成? 还是其他不同的技术? 有很多示例可供选择。 可能是骆驼最令人兴奋的方面之一。 它轻巧,稳定,并且已经存在多年了。 确保还遵循邮件列表和论坛 。
翻译自: https://www.javacodegeeks.com/2014/12/lightweight-integration-with-java-ee-and-camel.html