【Java.Apache.Camel】

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();  
    }  
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值