我有一个大量使用JMS的应用程序(OpenMQ目前)。我们需要在飞行中的某些消息上持久持久化,并且需要在数据库爆炸时继续存在,因此我们将代理的存储移动到JDBC,因为这意味着我们可以复制和备份数据库集群并且知道这两者都是从备份恢复时,关系和消息存储位于同一时间点。
我们发现OpenMQ的JDBC支持存储方法非常慢(数十条消息/秒)。有没有使用JDBC表现良好的经纪人?理想情况下,我们可以接收数千条消息,但可能会容忍100秒/秒。
答案 0 :(得分:0)
使用优化的消息存储来支持使用JDBC的消息传递服务器永远不会那么快。大多数情况下,代理只是将消息写入磁盘但不读取。与最大写入性能相比,传统数据库通常针对读取性能和复杂查询进行了更优化。
ActiveMQ with replicated LevelDB似乎非常适合您的要求。它会自动将消息存储复制到" slave"经纪人同时仍允许高吞吐量。
另一种选择是挖掘数据库部分而不是代理部分。如果将它们连接到JDBC,您可能会注意到与其他代理类似的模式。有没有办法让您的数据库在写入性能方面更高效? SSD磁盘?设置?正如我所说,默认情况下,大多数数据库都会针对复杂查询的读取性能和性能进行调整。