
camel
文章平均质量分 73
云原生之家
这个作者很懒,什么都没留下…
展开
-
Camel运行示例
这是一个很简单的Camel例子,代码如下:public static void main(String[] args) throws Exception { //创建Camel上下文 DefaultCamelContext camelContext = new DefaultCamelContext(); //添加一个路由,参数为路由建造者 camelContext.addRoutes原创 2014-09-06 00:06:48 · 2738 阅读 · 0 评论 -
Apache Camel Route节点的消息载体Exchange
在Camel的route中,消息在Route的各个节点中是以Exchange的形式传递的,所以对Exchange结构的理解对使用Camel来说是很重要的.Exchange ID 如果不指定,Camel会默认设置一个,可以用来标识一个route的一次执行.MEP message exchange pattern,有InOnly和InOut方式.Exception 但route出异常的时候转载 2014-09-17 21:37:19 · 2140 阅读 · 0 评论 -
Apache Camel框架之Freemarker做数据转换
在做系统集成的时候,必不可少的任务就是将数据从一种格式转换为另一种格式,再把转换后的格式发到目标系统,在此用实例介绍一下Camel中利用Freemarker做数据转换.1,Freemarker的模板如下:转载 2014-09-17 21:59:34 · 1123 阅读 · 0 评论 -
Apache Camel框架之HTTP路由
继介绍完Camel如何处理FTP,JMS接口之后,今天介绍一下系统集成的时候经常遇到的另一个接口,HTTP,一个示例需求如下图所示:(图片来源于Camel in Action)转载 2014-09-17 22:07:04 · 2122 阅读 · 0 评论 -
Apache Camel之数据转换
在做系统集成的时候,必不可少的任务就是将数据从一种格式转换为另一种格式,再把转换后的格式发到目标系统:转载 2014-09-17 22:09:55 · 2678 阅读 · 0 评论 -
Apache Camel框架之JMS路由
继上次Camel如何在做项目集成类型的项目中用于从FTP取文件和传文件之后,我们在系统集成中经常遇到的另一个应用就是将数据通过JMS传到消息中间件的queue里,或者从消息中间件的queue里取消息.本文简单的介绍和示例一个用Camel实现这样的需求:监听某一个文件夹是否有文件,取到文件后发送到另外一个系统监听的queue.(图片来源于Camel in Action)转载 2014-09-17 22:15:55 · 1353 阅读 · 0 评论 -
Apache Camel框架之FTP路由
在做项目集成类型的项目的时候,经常会有这样的需求,用户或者别的系统将文件传到一个FTP server,然后系统从FTP server取文件进行相应的处理.本文简单的介绍和示例一个用Camel实现这样的需求:监听FTPserver是否有文件,取到文件做相应处理传到另外一个系统. (图片来源于Camel in Action)转载 2014-09-17 22:24:36 · 1211 阅读 · 0 评论 -
Apache Camel框架集成Spring
Apache Camel提供了和Spring的集成,通过Spring容器(ApplicationContext)来管理Camel的CamelContext,这样的话,就不需要写代码来控制CamelContext的初始化,启动和停止了.Camel会随着Spring的启动而启动起来.本文将Apache Camel框架入门示例(http://blog.youkuaiyun.com/kkdelta/article转载 2014-09-17 22:32:04 · 1510 阅读 · 0 评论 -
Camel之AsyncProcessor
Camel支持一种更复杂的异步的处理模型,异步处理器实现一个继承自Processor接口的AsyncProcessor接口,使用异步Processor的优点:a.异步Processor不会因等待阻塞调用而耗尽线程,这样在处理同样工作量的情况下,通过减少线程的数量可以增加系统的伸缩性b.使用异步Processor,可以将路由分阶段处理,不同的线程池处理其相应的路由阶段,这就意味着路由可以并行原创 2014-10-26 01:05:26 · 2884 阅读 · 0 评论 -
Apache Camel框架之事务控制
本文简单介绍一下Apache Camel如何对route进行事务控制,首先介绍整个route只涉及到一个事务参与者的情况,然后再介绍route中涉及到多个事务参与者的情况.Camel是通过和Spring的框架集成进行事务控制的.1,整个route只有一个事务参与者,"局部事务",这里用JMS的例子,后台的MQ为ActiveMQ,示例图如下:(图片来源于Camel in Action)转载 2014-09-17 21:49:12 · 1575 阅读 · 0 评论 -
Apache Camel框架之Error handling
Apache Camel提供了许多处理路由过程出现的Exception的机制,本文简单介绍一下其异常处理的方法.1,默认的情况是在路由过程中没有处理的异常会被被抛出到路由的发起者,对发生异常的路由停止进行后续步骤的处理.比如下面的路由在process(p1)出错,那么当前路由停止,文件不会到达"d:/temp/outbox",同时d:/temp/inbox里造成异常的那个文件仍然留在d:/转载 2014-09-17 21:31:00 · 1374 阅读 · 0 评论 -
Camel中的重要概念
Endpoint:即节点,即消息经过的地方Camel支持的EndPoint1.JMS队列2.web service3.文件4.FTP服务5.email地址6.POJO在基于Camel的应用中,你会创建一些EndPoint然后用路由将这些EndPoint连接起来。Camel定义了一个名这EndPoint的接口,每一个Camel支持的EndPoint都有一个类实现了该E原创 2014-09-05 23:50:17 · 5165 阅读 · 0 评论 -
Apache Camel简介
Apache Camel是一个通用的,开源的,基于EIP(Enterprise Integration Patterns)的集成框架,在Camel中你可以使用多种领域语言来定义路由规则,包括基于Java的流式API,Spring或者Blueprint的XML配置文件,Scala DSL。Camel使用URI与任何一种传输或者消息模型协同工作,包括HTTP、ActiveMQ、JMS、JBI、SCA、原创 2014-07-06 19:41:08 · 3171 阅读 · 0 评论 -
Camel查找组件方式
在前面的Camel示例中,路由的构建中调用了RouteBuilder的from,to方法,该方法的参数为一个uri字符串。Camel运行是由组件(component)进行组织的,而我们传递的参数为一字符串,所以Camel要根据这个uri字符串来查找到对应的组件,即要维护uri到组件之间的映射关系。查找组件的过程是调用DefaultCamelContext中的getComponent(Str原创 2014-09-06 14:55:57 · 2887 阅读 · 0 评论 -
Camel路由构建过程
个人认为Camel中最重要的两大块,一是路由的构建过程,二是路由构建完成后的执行过程。下面就参数前面的Camel示例来说说路由的构建细节。其实这里说的路由构建其实是构建路由定义,对应Camel中的RouteDefinition类,一个RouteDefinition对象规定了或者说指定了一个消息从哪里产生,中间要经过什么样的处理,最后路由到什么地方。RouteDefinition有点类似ja原创 2014-09-06 16:52:41 · 5299 阅读 · 0 评论 -
Camel路由启动过程--续
上篇讲到启动Consumer,调用了DefaultCamelContext.startService(service)方法,下面是方法源码:private void startService(Service service) throws Exception { if (service instanceof StartupListener) { StartupListener liste原创 2014-09-07 16:27:38 · 2515 阅读 · 0 评论 -
Camel添加路由过程
Camel添加路由一般情况下是调用CamelContext的addRoutes(RoutesBuilder builder)方法实现的,下面我们看看该方法是如何实现路由的添加的:public void addRoutes(RoutesBuilder builder) throws Exception { //调用RouteBuilder的addRoutesToCamelContext方法,并原创 2014-09-06 19:27:36 · 3556 阅读 · 0 评论 -
Camel自定义组件示例
要想在Camel中自定义组件,就要对Camel中关键概念进行理解,了解Camel中路由的构建过程与启动过程,在前面的文章中已经有相关的叙述。这里就给出一个自定义组件的例子。该例子还是以文件轮询为主题,下面是具体代码。组件类:package com.xtayfjpk.esb.components.file;import java.util.Map;import org.apa原创 2014-09-07 21:11:23 · 6026 阅读 · 0 评论 -
Camel路由启动过程
路由启动由CamelContext的start()方法开始,在该方法中调用了super.start(),即调用父类ServiceSupport的start()方法,ServiceSupport的start()方法中调用了doStart()方法又回到CamelContext的doStart()方法,该方法中调用了doStartCamel()方法,在doStartCamel()方法中有两个最重要的方法原创 2014-09-07 10:57:15 · 4516 阅读 · 0 评论 -
Apache Camel分解(split)与聚合(aggregate)
在使用Camel时,你可能会使用到分解与聚合,例如当你向消息队列发送一个很大的文件的时候,你可能出于文件大小限制或效率的考量,需要将一个文件分解为若干文件包分别发送,在接收到接收到所有文件包后再合并为一个完整的文件。 分解即将一个消息分解为若干份(消息),然后可以对其进行单独处理,如下图: 要实现分解功能,则需要在路由定义中添加SplitDefinition,也就是要调原创 2015-07-31 17:28:21 · 5194 阅读 · 0 评论