apache camel

Apache Camel是著名的企业集成模式的开源实现。 Camel是一个路由和中介引擎,可帮助开发人员以各种特定于域的语言(DSL)(例如Java,Spring / XML,scala等)创建路由和中介规则。

骆驼用途广泛

Camel使用URI来支持大量的传输和消息传递模型,例如HTTP,JMS,JBI,Mina,SCA,CXF,它还与外部组件和数据格式很好地兼容。 要了解Camel的多功能性,您可以在下面的链接中浏览其支持的组件和URI列表。 http://camel.apache.org/components.html

骆驼易于使用

骆驼允许我们使用同一组API来创建路由并在各个组件之间传递消息。 这使得它非常容易使用

单元测试骆驼轻而易举

单元测试对于编写任何质量代码至关重要。 骆驼使软件开发的基础变得非常容易。 它提供了许多现成的组件,例如CamelContextSupport,camel-guice,camel-test-blueprint,可轻松测试代码。 在以后的文章中会更多。

骆驼的术语/类/接口

端点是交换消息的地方。 它可能是指地址,POJO,电子邮件地址,Web服务uri,队列uri,文件等。在骆驼中,终结点是由实现的终结点接口实现的。 端点被称为路由的东西包装。

CamelContext是所有骆驼应用程序的核心,它代表Camel运行时系统。

  1. 创建camelcontext。
  2. 添加端点或组件。
  3. 添加路由以连接端点。
  4. 调用camelcontext.start()-这将启动所有负责在端点中接收,发送和处理消息的骆驼内部线程。
  5. 最后,在交换和处理所有消息时调用camelcontext.stop()。 这将优雅地停止所有骆驼内部线程和端点。

这是围绕CamelContext对象的薄包装,它负责将交换或消息发送到端点。

组件实际上是一个端点工厂。 由于骆驼支持许多不同种类的资源,因此这些资源中的每一个都有不同种类的端点。 在实际情况下,应用程序不要直接使用组件创建端点。 相反,CamelContext决定实例化哪个组件,然后使用该组件实例创建端点。 因此,在应用程序中,我们将拥有。 CamelContext.getEndpoint(“ pop3://john.smith@mailserv.example.com?password = myPassword”); 现在,在这种情况下,pop3是组件的名称。 CamelContext将所有组件名称与组件类映射,并使用其实例化实例的名称。 一旦拥有了组件的句柄,它就会通过调用实例化端点。 Component.createInstance()方法。

消息表示单个具体消息,即请求,答复或异常。 所有具体的消息类都会影响消息接口,例如JmsMessage类。

交换是消息的容器。 当消费者在路由过程中收到消息时创建。

处理器接口表示处理消息的类。 它包含单个方法public void process(Exchange交换)引发异常。应用程序开发人员可以实现此接口,以便在消费者收到消息时对消息执行业务逻辑。

路由是通过过滤器或路由器通过任意类型的决策,将消息从源逐步移动到目的地。 它们是借助DSL(特定于域的语言)进行配置的。 Java DSL是通过实现routebuilder接口创建的。 它具有一个称为configure()的方法,该方法定义了消息的整个路由。 也可以使用spring通过xml文件配置路由。

骆驼代码的一个小例子。

让我们以一个小例子来说明一下Camel可以做什么。 在此示例中,我们将文件夹中存在的文件组移动到另一个文件夹。 在此过程中,我们将执行以下操作

  1. 签出Camel的依赖项。
  2. 创建一个简单的RouterBuilder。
  3. 在spring文件中注册CamelContext。
  4. 在CamelContext Bean中注入routerbuilder
  5. 通过启动Camelcontext来执行该类,并在执行完成后最终将其停止。

1.依赖关系 –在pom.xml中添加以下依赖关系

<dependency><groupId>org.apache.camel</groupId><artifactId>camel-core</artifactId><version>${camel-version}</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-spring</artifactId><version>${camel-version}</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-aws</artifactId><version>${camel-version}</version></dependency>

2.创建RouterBuilder –可以通过扩展org.apache.camel.builder.RouterBuilder类并覆盖configure()方法来创建RouterBuilder。 这是一个例子

import org.apache.camel.builder.RouteBuilder;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 7/28/13* Time: 10:29 AM* To change this template use File | Settings | File Templates.*/
public class MyFirstRouterBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {try{from( "file:d:/vids").to("file:d:/temp");}catch(Exception e){}}
}
  1. From()是源端点,包含骆驼将要轮询的文件或目录的uri。
  2. to()代表目标端点,并包含目标文件或目录的名称。
  3. 文件组件uri的格式为“ file:// nameOfFileOrDirectory ”。

3.在Spring中注册CamelContext并在Spring中注入RouterBuilder。

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"><camelContext id="sqsContext" xmlns="http://camel.apache.org/schema/spring"><routeBuilder ref="myFirstRouter" /></camelContext><bean id="myFirstRouter" class="com.aranin.aws.sqs.MyFirstRouterBuilder"/></beans>

4.启动骆驼上下文并执行代码,然后停止骆驼上下文。

import org.apache.camel.CamelContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 4/16/13* Time: 11:21 AM* To change this template use File | Settings | File Templates.*/
public class CamelHello {public static void main(String args[]) throws Exception {try {ApplicationContext springcontext = new FileSystemXmlApplicationContext("D:/samayik/awsdemo/src/main/resources/hellocamel.xml");CamelContext context = springcontext.getBean("firstCamelContext", CamelContext.class);context.start();Thread.sleep(10000);context.stop();} catch ( Exception e ) {System.out.println(e);}}
}

如果您运行此类,则首先我们从spring config文件中加载camelcontext。 在其中注入路由器生成器。 上下文启动后,然后将源目录中的所有文件复制到目标目录。 复制完所有文件后,尝试将新文件复制到源目录,在这种情况下,上下文运行10000 ms之前,该文件也将复制到目标文件。

我没有更多关于骆驼的高级教程。 也许您会发现它们很有用。 参考部分列出了这些链接。

参考资料

  1. http://camel.apache.org/
  2. http://camel.apache.org/enterprise-integration-patterns.html
  3. http://architects.dzone.com/articles/enterprise-integration
  4. http://weblog4j.com/2013/05/14/amazon-sqs-listening-to-sqs-using-apache-camel-the-spring-dsl-way/
  5. http://weblog4j.com/2013/04/17/amazon-sqs-listening-to-amazon-sqs-queue-using-apache-came l /

就这些了。 尽管没有人会发表评论,但是我还是要坚持不懈,如果您喜欢本教程,仍然请大家排一两行。

温暖的问候

尼拉吉

参考: Weblog4j博客上的JCG合作伙伴 Niraj Singh 对Apache Camel的介绍 。

翻译自: https://www.javacodegeeks.com/2013/08/introduction-to-apache-camel.html

apache camel

apache camel_Apache Camel简介相关推荐

  1. apache camel_Apache Camel日志组件示例

    apache camel Apache Camel日志组件示例 您要将消息记录到底层的记录机制中,请使用骆驼的log:组件. Camel使用sfl4j作为记录器API,然后允许您配置记录器实现. 在本 ...

  2. apache.camel_Apache Camel 2.9发布–十大变化

    apache.camel 在2011年的最后一天,阿帕奇骆驼制品被成功地推到了Maven仓库中,距离香槟酒瓶破裂并进入2012年仅1.5个小时. 2.9版是创纪录的发行版,自5个月前发布2.8版以来, ...

  3. apache.camel_Apache Camel K 1.0在这里–您为什么要关心

    apache.camel 昨天我们发布了Apache Camel K 1.0,并在社交媒体和Camel网站上宣布了该版本. 那么,骆驼K是什么,为什么你要在乎呢? 这是一个很好的问题,我想通过提及伟大 ...

  4. apache.camel_Apache Camel 3.1 – XML路由的快速加载

    apache.camel Camel 3.1中添加的一项功能是能够更快地加载XML路由. 这是我们为使Camel变得更小,更快而进行的总体工作的一部分. 您可能会说ewww XML. 但坦率地说,有很 ...

  5. apache.camel_Apache Camel 3.2 – Camel的无反射配置

    apache.camel 在Apache Camel项目中,我们正在努力开发下一个即将发布的Apache Camel 3.2.0版本. 我们在Camel 3中努力研究的问题之一就是使其变得更小,更快. ...

  6. apache.camel_Apache Camel 3.1 –即将推出更多骆驼核心优化

    apache.camel 希望一切都很好,您可以安全进入2020年. Camel团队已经在忙于开发下一个Camel 3.1版本. 目标之一是继续优化骆驼核心,这一次我们花了一些时间来寻找路由引擎中的一 ...

  7. apache.camel_Apache Camel 3.1 –更多骆驼核心优化(第2部分)

    apache.camel 我以前曾在博客中介绍我们在下一个Camel 3.1版本(第1部分)中所做的优化 . 今天,我想发布大约4周后的状态更新. 我们集中在三个方面优化骆驼核心: 不必要的对象分配 ...

  8. apache.camel_Apache Camel 3.1 –更多骆驼核心优化(第3部分)

    apache.camel 我以前曾在博客中介绍过我们在下一个Camel 3.1版本中所做的优化 博客第1部分 博客第2部分 今天,我想简要介绍一下我们已经完成的最新开发,因为我们准备在本周末或下半年准 ...

  9. apache.camel_Apache Camel 2.23发布

    apache.camel 昨天发布了Apache Camel 2.23 ,其中最值得注意的新功能是对Spring Boot 2.1的支持,我们还改进了启动器组件以包括更多的元数据,并对改进的Sprin ...

最新文章

  1. 区块链技术之以太坊ETH白皮书
  2. 使用SAP CRM WebClient UI Design layer修改field label
  3. Service Worker 的一个实战例子
  4. nodejs常用模块-url
  5. Pandas知识点-索引和切片操作
  6. Pytorch《LSTM模型》
  7. php简单论坛登录注册,php简单登录注册验证
  8. android 添加桌面快捷方式
  9. django session过期设置
  10. MTK 开机logo 修改
  11. ios教程,用pc开发ios游戏
  12. win2008 时间同步命令
  13. Linux下安装qt5步骤
  14. 通达信最新 行情服务器,通达信行情服务器数据
  15. C#合并文件夹中所有的txt文本文件
  16. 解决vmware不能上网的问题
  17. WordPress主题-一个极简的免费WordPress博客主题
  18. 图形验证码接口及其重构思想
  19. IjkVideoView 视频播放
  20. php汉字转拼音百家姓版,砚田马中华书《百家姓》(文字拼音版)

热门文章

  1. Codeforces Round #497 (Div. 1)
  2. SpringCloud Ribbon(四)之全局配置与服务配置
  3. Zookeeper面试题
  4. 汇编语言(三十一)之数字字符串加密与解密
  5. 淘宝秒杀系统设计的几个注意点
  6. MySQL week()函数
  7. JVM内存管理------垃圾搜集器参数精解
  8. (九)Spring 事务开发、事务属性详解
  9. a+=b不一定等于a=a+b
  10. 263. 丑数---LeetCode---JAVA