关于apache camel你需要知道的

定义:轻量级的集成框架,基于EIP(企业整合模式)blabla...

什么时候使用:
多个应用程序使用不同的协议和技术集成,无论使用什么协议,无论使用什么技术,无论特定领域的语言。

主要应用场景:
1,消息汇聚,
比如你有来自不同服务器的消息,有ActiveMQ,RabbitMQ,WebService等,你想把它们都存储到日志文件中

new RouteBuilder() {
  @Override
  public void configure() throws Exception {
  from("amqp:queue:incoming").to("log:com.mycompany.log?level=DEBUG");
  from("rabbitmq://localhost/A/routingKey=B").to("log:com.mycompany.log?level=DEBUG");
  from("jetty:http://localhost:8080/myapp/myservice").to("log:com.mycompany.log?level=DEBUG");
  }
}

from表示从这个endpoing取消息,to表示将消息发往这个endpoint,endpoint是消息地址,包含协议类型以及url。

2.消息分发,
分为两种,顺序分发和并行分发。
顺序分发:先到第一个endpoint,处理完再分发到第二个endpoint......如果第一个endpoint出错,那么消息不会下传。

from("amqp:queue:order").to("uri:validateBean", "uri:handleBean", "uri:emailBean");

这个规则是从order队列中取订单信息,然后依次验证订单,处理订单,并发送邮件通知用户。任何一个步骤出错,下一个步骤将不回执行。

并行分发:得到消息后同时分发到不同的endpoint,没有先后顺序之分,各个endpoint也是独立处理消息的。如:

from("amqp:queue:order").multicast().to("uri:validateBean", "uri:handleBean", "uri:emailBean");

同时发送到to的所有endpoint。

3,消息转换,如xml转换json

from("amqp:queue:order").process(new XmlToJsonProcessor()).to("bean:orderHandler");

XmlToJsonProcessor是一个自定义的类,继承org.apache.camel.Processor,用来将xml转换为json。

4, 规则引擎
使用spring xml配置route,无需修改代码,就能修改业务逻辑,解耦
如可以将from("amqp:queue:order").multicast().to("uri:validateBean", "uri:handleBean", "uri:emailBean");可以改成


        
        
            
            
            
        

同时camel还内置大量的processor,用于逻辑运算,过滤,这样就容易灵活去route

from("amqp:queue:order").filter(header("foo").isEqualTo("bar")).choice()
    .when(xpath("/person/city = 'London'"))
        .to("file:target/messages/uk")
    .otherwise()
        .to("file:target/messages/others");

这条规则相对订单进行过滤,只处理“bar”的订单,然后根据城市讲订单给不同的endpoint

你可能感兴趣的:(关于apache camel你需要知道的)