什么是Camel? Camel框架的核心是一个路由引擎,或者更确切地说是一个路由引擎构建器。它允许您定义自己的路由规则,决定从哪个源接收消息,并确定如何处理这些消息并将其发送到其他目标。 Camel提供更高层次的抽象,使您可以使用相同的API与各种系统进行交互,而不管系统使用的协议或数据类型如何。 Camel中的组件提供了针对不同协议和数据类型的API的特定实现。开箱即用,Camel支持80多种协议和数据类型。 Getting started 源码地址:https://github.com/camelinaction/camelinaction.git 下面是一个拷贝文件的例子,将文件从data/inbox拷贝到data/outbox 1 添加maven依赖 <dependencies> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> <version>2.15.6</version> </dependency> </dependencies> 2 代码 public class FileCopierWithCamel { public static void main(String args[]) throws Exception { // create CamelContext CamelContext context = new DefaultCamelContext(); // add our route to the CamelContext context.addRoutes(new RouteBuilder() { public void configure() { /** file: 表示使用文件Component from 表示从哪里获取数据,进行消费 to 表示将数据生产到哪里 */ from("file:data/inbox?noop=true").to("file:data/outbox"); } }); // start the route and let it do its work context.start(); Thread.sleep(10000); // stop the CamelContext context.stop(); } } Camel概念 CamelContext Camel的容器,通过CamelContext可以访问内部服务:Components,Endpoints,Endpoints,Registry等等 image.png Routes 通过路由可以实现:客户端与服务端,生产者与消费者的解耦 比如:从ftp服务上获取订单信息,将其发送到JMS队列,可以通过如下路由表示 //from可以理解成消费者:表示从ftp服务上获取数据进行消费 from("ftp://rider.com/orders?username=rider&password=secret") //to可以理解成生产者:表示将数据发送给jms .to("jms:incomingOrders"); image.png endpoint URI 可以简单理解成消息的地址 对