Indexing ActiveMQ使用者在启动时需要很长时间才能接收消息

Indexing ActiveMQ使用者在启动时需要很长时间才能接收消息,indexing,jms,activemq,consumer,Indexing,Jms,Activemq,Consumer,我在重新启动时遇到了消费者方面的问题。在转储堆并筛选线程之后,我确定问题是由于kahadb本地存储库索引文件的压缩造成的。随着此文件变大,消费者再次开始获取消息所需的时间也会增加。我已经删除了我的本地存储库目录,重新启动,并验证消费者几乎立即收到消息 在使用ActiveMQ和KahaDB时,是否有人遇到过此问题?有时,如果目录没有被删除,我的消费者可能需要1.5个小时才能再次开始从代理获取消息 我还验证了消息是及时发布的,只是没有被使用,因为索引压缩线程正在阻止“添加”线程 如有任何见解,将不胜

我在重新启动时遇到了消费者方面的问题。在转储堆并筛选线程之后,我确定问题是由于kahadb本地存储库索引文件的压缩造成的。随着此文件变大,消费者再次开始获取消息所需的时间也会增加。我已经删除了我的本地存储库目录,重新启动,并验证消费者几乎立即收到消息

在使用ActiveMQ和KahaDB时,是否有人遇到过此问题?有时,如果目录没有被删除,我的消费者可能需要1.5个小时才能再次开始从代理获取消息

我还验证了消息是及时发布的,只是没有被使用,因为索引压缩线程正在阻止“添加”线程


如有任何见解,将不胜感激

你有没有考虑过改用levelDB(),它有一种完全不同的方法将索引写入磁盘,所以它可能会帮助你。它似乎是AMQ未来版本中首选的持久性存储,也感谢您的响应!我进入了一个预先存在的项目,该项目利用ActiveMQ 5.5.1。根据您指向我的网站,只有ActiveMQ 5.8.0及更高版本才支持levelDB存储。该文件不应变得太大。一旦处理了持久性消息,您是否会在消费者端提交它们?您是否尝试过在禁用持久性的情况下运行代理以查看是否也会出现这种减速?我能够解决此问题。消费者的清除策略中有一个bug,导致它从未被调用。持久消息在处理后从未被删除,导致启动过程异常漫长,所有消息都被重新索引。