2013-05-28 107 views
2

我正在使用Apache Camel和aggretaor EIP工作。该路由通过jms从数据库中消耗数据,将其聚合并将它们发送到web服务。Camel Aggregator EIP提高速度

聚合器将数据保留在oracle数据库中。我们都知道,aggreagtor的同步块就是那条路线上的脖子。

我已经尝试过使用多个桶(correltionExpression = threadName),但它并没有提高速度不亚于想...

我需要至少150条消息一秒钟。目前,只有70是可能的:(

有没有人有一个想法的速度如何改进也许第二聚合有任何建议

最后一个问题:???能写短信聚合器在并行的多个桶中,或者因为锁定而不是这种情况?因为代码中的文档说明它是(每个相关键的并发聚合可以提高性能),所以代码本身在我看来并不这样做。

提前致谢!!

斯特凡

回答

0

您可以实现自己的AggregationRepository,并且可以在其中对数据库执行批量保存。

开箱即用的JDBC基于一次更新/插入。

+0

你好克劳斯,写一个自己的AggregationRepository是个好主意,但是在我的选择中,实现起来确实很困难,因为它必须是事务安全的。我不知道如何实现这一点。有没有第二个想法,我可以加快配信的速度? – sarians

0

您可以使用HawtDB文件存储库实现聚合器。虽然我的应用程序中已经遇到HawtDB或Level DB存储库的性能问题,但我相信它会比JDBC持久性更快。

据我所见,如果你准备牺牲数据持久性,没有什么比内存聚合更好。