骆驼分裂大sql导致较小的块

时间:2014-11-27 10:54:12

标签: sql apache-camel

由于内存限制,我需要将结果从sql-component(List<Map<column,value>>)拆分为更小的块(几千个)。

我知道

from(sql:...).split(body()).streaming().to(...)

我也知道

.split().tokenize("\n", 1000).streaming() 

但后者不使用List<Map<>>并且还返回一个String。 是否有开箱即用的方式来创建这些块?或者我是否需要在拆分后面添加自定义聚合器?或者还有另一种方式吗?

修改 土壤工人要求的其他信息: 目前,sql端点以这种方式配置:

SqlEndpoint endpoint = context.getEndpoint("sql:select * from " + lookupTableName + "?dataSource=" + LOOK_UP_DS,
                                           SqlEndpoint.class);
// returns complete result in one list instead of one exchange per line.
endpoint.getConsumerProperties().put("useIterator", false);
// poll interval
endpoint.getConsumerProperties().put("delay", LOOKUP_POLL_INTERVAL);

使用它的路由应该每天轮询一次(我们将很快添加CronScheduledRoutePolicy)并获取一个完整的表(视图)。所有数据都使用自定义处理器转换为csv,并通过自定义组件发送到专有软件。该表有5列(小字符串)和大约20M条目。 我不知道是否存在内存问题。但我知道在我的本地机器上3GB是不够的。有没有办法近似记忆足迹,知道一定数量的Ram是否足够?

提前致谢

1 个答案:

答案 0 :(得分:0)

maxMessagesPerPoll将帮助您批量获得结果