3

我正在使用 Apache Camel 和 aggretaor EIP 开发一条路线。该路由通过 jms 使用来自数据库的数据,将其聚合并将它们发送到 Web 服务。

聚合器将数据持久保存在 oracle 数据库中。

众所周知,聚合器的同步块是该路由中的瓶颈。

我已经尝试使用多个存储桶(correltionExpression = threadName),但它并没有像想要的那样提高速度......

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

有谁知道如何提高速度?也许第二个聚合器?有什么建议吗?

最后一个问题:聚合器是否能够在多个存储桶中并行写入消息,还是因为锁而不能这样?因为代码中的文档说它是(每个相关键的并发聚合可以提高性能),所以我认为代码本身并没有这样做。

提前致谢!!

斯特凡

4

2 回答 2

1

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

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

于 2014-03-06T06:51:10.713 回答
0

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

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

于 2013-05-29T06:26:04.470 回答