我正在使用Apache Camel和aggretaor EIP开发一条路线。该路由通过jms从数据库中消耗数据,聚合它并将它们发送到Web服务。
聚合器将数据保存在oracle数据库中。
众所周知,聚合器的同步块是该路径中的boddle neck。
我已经尝试过使用多个存储桶(correltionExpression = threadName),但它并没有像想要的那样提高速度......
我每秒至少需要150封邮件。目前只有70个是可能的:(
有谁知道如何提高速度?也许是第二个聚合器?有什么建议吗?
最后一个问题:聚合器能够并行地在多个存储桶中写入消息,还是因为锁定而不是这种情况?因为代码中的文档说它是(每个相关键的并发聚合可以提高性能),所以代码本身并不是我认为的。
提前致谢!!
的Stefan
答案 0 :(得分:0)
您可以实现自己的AggregationRepository,在那里您可以批量保存到数据库。
基于JDBC的开箱即用一次进行一次更新/插入。
答案 1 :(得分:0)
您可以使用HawtDB文件存储库实现聚合器。虽然我已经在我的应用程序中遇到了HawtDB或Level DB存储库的性能问题,但我确信它会比JDBC持久性更快。
据我所见,如果你准备牺牲数据持久性,没有什么比内存聚合更好。