apache camel 的 split 和 aggregate
2019独角兽企业重金招聘Python工程师标准>>>
split和aggregate,看图就明白了。
下面我用一个例子来说明,非常难得,你很难在网上找到apache camel这样的例子。
1、路由
from("jms:TOOL.TTT").bean(TttBean.class, "start").split(body(List.class),new MyAggregationStrategy()).bean(TttBean.class, "processOneLi").end().split(body(List.class)).bean(TttBean.class, "processOne").bean(TttBean.class, "end");
2、测试bean
public class TttBean {public void start(Exchange exchange){List<List<Integer>> ii = new ArrayList<List<Integer>>();for(int i =0;i<2;i++){List<Integer> li = new ArrayList<Integer>();for(int j = 10;j < 15; j++){li.add(j);}ii.add(li);}exchange.getIn().setBody(ii);System.out.println("start....");}public void processOneLi(Exchange exchange){System.out.println("CamelSplitIndex:" + exchange.getProperty("CamelSplitIndex",int.class));System.out.println("CamelSplitSize:" + exchange.getProperty("CamelSplitSize",int.class));System.out.println("CamelSplitComplete:" + exchange.getProperty("CamelSplitComplete",boolean.class));List<Integer> li = exchange.getIn().getBody(List.class);System.out.println("oneLi");}public void processOne(Exchange exchange){System.out.println("CamelSplitIndex:" + exchange.getProperty("CamelSplitIndex",int.class));System.out.println("CamelSplitSize:" + exchange.getProperty("CamelSplitSize",int.class));System.out.println("CamelSplitComplete:" + exchange.getProperty("CamelSplitComplete",boolean.class));int i = exchange.getIn().getBody(int.class);System.out.println(i);}public void end(Exchange exchange){System.out.println("ending....");}
}
3、聚合类
public class MyAggregationStrategy implements AggregationStrategy{@Overridepublic Exchange aggregate(Exchange oldExchange, Exchange newExchange) {if (oldExchange == null) {// the first time we aggregate we only have the new exchange,// so we just return itreturn newExchange;}List<Integer> lio = oldExchange.getIn().getBody(List.class);List<Integer> lin = newExchange.getIn().getBody(List.class);for(Integer i : lin){lio.add(i);}oldExchange.getIn().setBody(lio);return oldExchange;}}
4、输出:
start....
CamelSplitIndex:0
CamelSplitSize:2
CamelSplitComplete:false
oneLi
CamelSplitIndex:1
CamelSplitSize:2
CamelSplitComplete:true
oneLi
CamelSplitIndex:0
CamelSplitSize:10
CamelSplitComplete:false
10
ending....
CamelSplitIndex:1
CamelSplitSize:10
CamelSplitComplete:false
11
ending....
CamelSplitIndex:2
CamelSplitSize:10
CamelSplitComplete:false
12
ending....
CamelSplitIndex:3
CamelSplitSize:10
CamelSplitComplete:false
13
ending....
CamelSplitIndex:4
CamelSplitSize:10
CamelSplitComplete:false
14
ending....
CamelSplitIndex:5
CamelSplitSize:10
CamelSplitComplete:false
10
ending....
CamelSplitIndex:6
CamelSplitSize:10
CamelSplitComplete:false
11
ending....
CamelSplitIndex:7
CamelSplitSize:10
CamelSplitComplete:false
12
ending....
CamelSplitIndex:8
CamelSplitSize:10
CamelSplitComplete:false
13
ending....
CamelSplitIndex:9
CamelSplitSize:10
CamelSplitComplete:true
14
ending....
转载于:https://my.oschina.net/jianglibo/blog/17627
apache camel 的 split 和 aggregate相关推荐
- apache camel_学习Apache Camel –实时索引推文
apache camel 在大多数软件开发项目中,有一点需要使应用程序开始与其他应用程序或第三方组件通信. 无论是发送电子邮件通知,调用外部api,写入文件还是将数据从一个地方迁移到另一个地方,您都可 ...
- apache camel_发掘Apache Camel的力量
apache camel 最近几年,ESB软件越来越受欢迎. 如果大多数人通常知道什么是ESB,那么他们很少会清楚地了解这种体系结构的不同组件的确切作用. 例如,Apache ServiceMix由三 ...
- 学习Apache Camel –实时索引推文
在大多数软件开发项目中,有一点需要使应用程序开始与其他应用程序或第三方组件通信. 无论是发送电子邮件通知,调用外部api,写入文件还是将数据从一个地方迁移到另一个地方,您都可以推出自己的解决方案或利用 ...
- 发掘Apache Camel的力量
最近几年,ESB软件越来越受欢迎. 如果大多数人通常知道什么是ESB,那么他们很少会清楚地了解这种体系结构的不同组件的确切作用. 例如,Apache ServiceMix由三个主要组件组成:Apach ...
- springboot 整合 apache camel实现企业级数据集成和处理
Apache Camel是一个集成框架,它具有用于集成各种应用程序的编程模型. 对于需要在不同的微服务和其他上下游系统(如数据库和消息传递系统)之间进行通信的微服务体系结构,它非常适合. 在本文中,我 ...
- 简化软件集成:一个Apache Camel教程
本文来自于阮一峰,文章主要讲解了构建的流程,每个步骤介绍的较为详细,希望对大家有帮助. 软件很少(如果有的话)存在于信息真空中.至少,这是我们软件工程师可以为我们开发的大多数应用程序做出的假设. 在任 ...
- apache camel_探索Apache Camel Core –文件组件
apache camel 文件轮询器是解决常见IT问题的非常有用的机制. Camel的内置file组件非常灵活,并且有许多选项可用于配置. 让我们在这里介绍一些常用用法. 轮询目录以输入文件 这是一条 ...
- apache camel_轻量级的开源集成:Apache Camel还是Spring集成?
apache camel 首先,为全面披露信息,在过去的1.5年中, 我一直担任 FuseSource(现为Red Hat) 的顾问,为零售,运输,银行/金融等不同行业的大型和小型公司提供SOA和集成 ...
- Apache Camel –从头开始开发应用程序(第1部分/第2部分)
开始之前 前一段时间,我写了一篇关于Spring Integration的教程,以演示如何在受现实发票处理系统启发的示例应用程序中使用Spring Integration. 我对此非常满意,因此我决定 ...
最新文章
- android button背景随心搭配
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- leetcode455. 分发饼干
- android 在什么情况下会主动gc_Python 什么情况下会生成 pyc 文件?
- 华为p50预装鸿蒙系统,华为P50系列将至,内部测试预装鸿蒙系统,还有4款重磅新品将发布...
- 这才是真正适合小白的教程:Python有什么用?数据化运营怎么做?
- 为 IDES471 激活中文
- 实用UI设计需要学什么软件?
- 计算机网络学习笔记(30. DNS记录和消息)
- 5-7Linux 起源,与Unix的联系,与Windows的不同
- XP桌面背景文件路径
- 360网站域名拦截检测 非法网址检测系统原理
- 在Azure的云服务器上搭建个人网站
- [读书笔记]高效15法则 谷歌、苹果都在用的深度工作法
- 痛失移动支付的翼支付,未来仍存四大机会?
- VM虚拟机Ubuntu配置静态ip,亲测有效
- 高等代数 线性映射(第9章)1 概念,运算,核与象
- Access-Control-Allow-Origin 解决方法
- 怎么找回xmind意外关机的文件_如何在意外关机后恢复文件
- Android 读取、接收、发送 手机短信
热门文章
- 关于网页制作的规划与流程图的使用
- NetBeans优化技巧 提升启动速度
- C++ 设计员工类(Employee)
- Node.js 将Json文件数据转为SQL可执行的insert语句
- php+icu+库是什么意思,如何从PHP Intl(ICU库)中的货币代码获取货币符号
- memcache redis
- 关于mysql启动问题---mysqld_safe mysqld from pid file * ended
- 软件工程实践2017第二次作业
- 【译文】MySQL InnoDB 事物模型
- ubuntu apache2 的负载均衡和反向代理