camel java_与Java EE和Camel的轻量级集成

camel java

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配置文件 ,甚至还有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

camel java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 伪随机数程序,C语言的伪随机数

一直想好好的系统的学习一下C语言的伪随机数&#xff0c;今天终于逮到机会了伪随机数C语言中有可以产生随机数据的函数&#xff0c;需要添加stdlib.h和time.h头文件。首先在main函数开头加上srand(unsigned)time(NULL))。先来介绍一下srand头文件&#xff1a;定义函数&#xff…

最大隶属度原则_模糊数学笔记:六、模糊模型识别-I(最大隶属度原则)

1、模型识别的问题提出模型识别&#xff0c;通俗地理解即是对一个类别未知的对象进行归类&#xff08;或者叫分类&#xff09;。这里与聚类不同的是&#xff0c;聚类实际上是要区分出已有的样本哪些属于同一类&#xff0c;但并没有参考标准。而识别则事先有参考的标准&#xff…

C语言经典题

C 库函数 - tanh()描述C 库函数 double tanh(double x) 返回 x 的双曲正切。声明下面是 tanh() 函数的声明。double tanh(double x)参数x -- 浮点值。返回值该函数返回 x 的双曲正切。实例下面的实例演示了 tanh() 函数的用法。#include#include int main (){ double x, ret;…

用c语言产生大素数,C语言实现寻找大素数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼找到一亿内所有素数并写入文件用时 35秒.#include "math.h"#include "stdio.h" #include "stdlib.h" #include "time.h"int isP(int num,int *p) { int i; int lenp[0]; int flag1; p;for…

java ee自动生成编码_EE Servlet 3:在Servlet中生成HTML输出

java ee自动生成编码如果您只需要在EE Web模块中处理少量请求URI&#xff0c;那么在Servlet代码中生成自己HTML响应可能比使用完整的模板库更容易。 作为示例的一部分&#xff0c;我尝试了一个非常简单的Java DSL&#xff0c;该Java DSL在编写自己的Serlvet时生成html输出。 代…

jq 控制td只显示一行_CSS让表格里的内容强制显示一行,超出长度显示省略号

在写html页面的时候&#xff0c;会经常用到表格&#xff0c;而且很多时候一个tr里边需要包含好几个td&#xff0c;这样就会导致tr的高度不一致&#xff0c;被撑开了这时候&#xff0c;如果能让td里的内容强制显示在一行&#xff0c;并让超出边界范围的内容显示点点&#xff0c;…

C++11的模板改进

C11关于模板有一些细节的改进&#xff1a;模板的右尖括号模板的别名函数模板的默认模板参数模板的右尖括号C11之前是不允许两个右尖括号出现的&#xff0c;会被认为是右移操作符&#xff0c;所以需要中间加个空格进行分割&#xff0c;避免发生编译错误。int main() {std::vecto…

java面试题2014_Java生态系统– 2014年我的5大亮点

java面试题20141月1日-RedMonk Analyst公司宣布Java比以往任何时候都更加流行和多样化&#xff01; 2014年&#xff0c;随着FOSDEM的Free Java会议室的年会&#xff0c;Java生态系统开始轰轰烈烈地响起。 除了关于OpenJDK和相关主题的许多精深的技术讲座外&#xff0c;Steve OG…

android 第三方圆弧进度条,android 可配置的圆弧进度条

Arc ProgressBar Configurable 圆弧环形进度条DEMOAttributesnameformatdescriptionborderWidthinteger圆弧边框的宽度progressStyletick/arc进度条类型&#xff0c;tick 为带刻度的radiusinteger半径arcbgColorcolor圆弧的边框背景degreeinteger弧度&#xff0c;设置为 0 即为…

三分钟让孩子的数学开窍

周末给孩子灌了一个世界观和方法论&#xff1a;用笛卡尔坐标系描述世界。 我强调&#xff0c;学习笛卡尔坐标系不是做题&#xff0c;它是工具&#xff0c;它是帮你解题的&#xff0c;而不是为难你的。 任何数学题放在笛卡尔坐标系都可以通过机械的方法硬算&#xff0c;计算过程…

oracle大对象实例_超大型Oracle数据库设计实例

超大型系统的特点为&#xff1a; 1.处理的用户数一般都超过百万&#xff0c;有的还超过千万&#xff0c;数据库的数据量一般超过1TB&#xff1b; 2.系统必须提供实时响应功能&#xff0c;系统需不停机运行&#xff0c;要求系统有很高的可用性及可扩展性。 这篇是笔者针对以上特…

C++定时器的实现之格式修订版

个人认为一个完备的定时器需要有如下功能&#xff1a;在某一时间点执行某一任务在某段时间后执行某一任务重复执行某一任务N次&#xff0c;任务间隔时间T那么如何实现定时器呢&#xff1f;下面是我自己实现的定时器逻辑&#xff0c;源码链接最后会附上。定时器中主要的数据结构…

java 性能调优_Java性能调优调查结果(第四部分)

java 性能调优这是本系列中的最后一篇文章&#xff0c;我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果。如果您尚未阅读第一篇文章&#xff0c;建议您首先阅读以下内容&#xff1a; 性能问题的频率和严重性 最受欢迎的监控解决方案 查找根本原因的工…

Android接入热敏打印机,Android 关于佳博和汉印蓝牙热敏打印机开发

接上篇文章Android之BLE(低功耗)蓝牙开发&#xff0c;本篇文章针对上篇博文中提出的两款打印机的开发流程进行记录。首先不管时佳博打印机还是汉印打印机&#xff0c;都是先对他们各自的lib进行导入&#xff0c;如图&#xff1a;导入lib之后&#xff0c;一定要记得进行sync pro…

C 桥接模式 - 开关和电器

桥接模式&#xff08;Bridge Pattern&#xff09;是将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。1模式结构UML 结构图&#xff1a;Abstraction&#xff08;抽象类&#xff09;&#xff1a;用于定义抽象类的接口&#xff0c;并且维护一个指向 Implementor…

centos8配置本地光盘yum源_CentOS8 配置本地yum源的详细教程

centos8发行版通过 baseos 和应用流 (appstream) 仓库发布&#xff0c;appstream 是对传统 rpm 格式的全新扩展&#xff0c;为一个组件同时提供多个主要版本centos8 自带封装了nginx&#xff0c;这篇文章给大家介绍centos8 配置本地yum源&#xff0c;具体内容如下所示&#xff…

javafx显示image_如何摆脱JavaFX中的重点突出显示

javafx显示image今天&#xff0c;有人问我是否知道摆脱JavaFX控件&#xff08;分别是按钮&#xff09;的焦点突出的方法&#xff1a; 有关此问题的大多数文章和提示建议添加&#xff1a; .button:focused {-fx-focus-color: transparent; }但是使用这种样式&#xff0c;仍然…

android aop静态方法,spring aop 不能对静态方法进行增强解决

想要通过aop的方式记录HttpUtils发出的post请求日志&#xff0c;但是 aop 不能对静态方法进行增强。只能对实例方法进行增强。。如果一定要增强静态方法&#xff0c;我们可以对目标类使用单例模式&#xff0c;然后通过调用实例方法去调用那个静态方法&#xff0c;而且对应的对象…

汉字笔画动图怎么做_隶书基本笔画教程(动态图)

隶书开创并奠定了汉字的书写形式。而隶书的美时而古朴遒劲&#xff0c;时而秀美温润&#xff0c;实在是令人神往。笔法有方有圆&#xff0c;方圆并用。下面文章以明朗的笔迹演示&#xff0c;结合相对切实的例字&#xff0c;给大家详尽讲解隶书的基本写法。掌握这些基本写法后&a…

C语言没有引用,只有指针

这个问题是昨晚上有同学在知识星球提问&#xff0c;但是因为前两天一直在出差&#xff0c;比较累&#xff0c;没认真回答&#xff0c;今天打球回来&#xff0c;就把这个事情解决了。我想说的已经在题目说明的很清楚了&#xff0c;C语言是没有引用的&#xff0c;引用是在C 里面才…