当前位置: 代码迷 >> 综合 >> 【Java.Apache.Camel】
  详细解决方案

【Java.Apache.Camel】

热度:76   发布时间:2023-12-14 18:40:03.0

Apache Camel —— 一种Enterprise Integration Patterns的实现; 参考《企业集成模式:设计、构建及部署消息传递解决方案》。

提供消息路由route:基本功能是接受消息、处理消息和分派消息。

通过Java领域特定语言DSL(基于Camel 提供的java API, 或者Spring配置文件等)来配置路由和处理规则。其核心的思想是从一个from源头得到数据,通过Processor处理,再发到另一个to目的地。


Camel使用URIs表示不同的消息传输模型。


目前支持的URIs类型:

disruptor://

file://

ftp://

hbase://

hdfs://

http://

ibatis://

jdbc://

jms://

jmx://

jpa://

ldap://

quartz://

rmi://

quickfix://

smtp://

sql:

zookeeper:

spring-redis://

,.etc ... ...


第三方扩展:

activemq://

hibernate://

zeromq://

,.etc ... ...



E.g.

E1: ftp - 文件系统路由


CamelContext context = new DefaultCamelContext();  
context.addRoutes(new RouteBuilder() {  public void configure() {                            from("ftp://localhost/inbox?username=yorker&password=123456").to(  "file:d:/temp/outbox");  }  
});  
context.start();  
boolean loop = true;  
while (loop) {  Thread.sleep(25000);  
}  context.stop(); 

E2: jms路由


private static String user = ActiveMQConnection.DEFAULT_USER;  
private static String password = ActiveMQConnection.DEFAULT_PASSWORD;  
private static String url = ActiveMQConnection.DEFAULT_BROKER_URL;  public static void main(String args[]) throws Exception {          CamelContext context = new DefaultCamelContext();          ConnectionFactory connectionFactory =   new ActiveMQConnectionFactory(user, password, url);  context.addComponent("jms",  JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));  System.out.println(url + " " + user + password);          context.addRoutes(new RouteBuilder() {  public void configure() {                  from("file:d:/temp/inbox").to(  "jms:queue:TOOL.DEFAULT");  }  });  context.start();  boolean loop = true;  while (loop) {  Thread.sleep(25000);  }  context.stop();  
}  


E3: http路由



public class HttpPollWithQuartzCamel {  public static void main(String args[]) throws Exception {  CamelContext context = new DefaultCamelContext();  context.addRoutes(new RouteBuilder() {  public void configure() {                  from("quartz://report?cron=10 * * * * ?&stateful=true")  .to("http://localhost:8080/prjWeb/test.camelreq")  .to("file:d:/temp/outbox?fileName=http.csv");  );  }  });  context.start();  boolean loop = true;  while (loop) {  Thread.sleep(25000);  }  context.stop();  }  
}  



  相关解决方案