2017-10-22 274 views
0

我正在使用activemq。 KahaDB是activemq的默认消息存储。但它不断增加,最终耗尽了磁盘空间。即使所有消息都被确认,它仍然会不断增大,并在其数据存储区中不断创建新的日志文件。KahaDB错误“磁盘上没有剩余空间”。如何解决这个问题?

我没有设置与KahaDB相关的属性,它使用了默认属性。

 broker = new BrokerService(); 
     TransportConnector connector = new TransportConnector(); 
     connector.setUri(new URI("tcp://localhost:61616")); 
     broker.addConnector(connector); 
     broker.start(); 

这些是我在经纪人上设置的唯一属性。有人可以告诉我可以在KahaDB上使用的属性没有这个错误吗?

+0

可能有几个原因导致磁盘空间不足。我建议再研究一下ActiveMQ文档/指南。 –

回答

0

KahaDB日志和索引文件存在很多原因,其中一些原因并不总是显而易见,所以您需要进行一些调试并查看保留日志文件的内容,它可以像一个未经确认的消息保存整个日志文件,并且在某些情况下将来的日志文件会跟踪该日志中其他消息的消息。

ActiveMQ网站上有一个很好的article关于这方面的研究,以便你可以看到你的情况是什么东西保持在日志中的活着。使用最新版本也是一个不错的主意,因为事情会沿着这条路被固定下来,以防日志在不应该出现的时候出现。

+0

我绝对没有任何未经确认的消息。如果邮件发送给DLQ,那么是否会阻止整个日志文件被删除? 让我们来看一个场景,如果DLQ中有20条消息,并且所有20条消息都存在于不同的日志文件中,那么它会保留我相信的所有20个日志文件,对吧? – hars

+0

是的,DLQ与其他任何队列一样是一个队列,如果消息稀疏地布置,那么它们将所有日志保留在它们所在的位置。使用我给出的链接中提供的调试信息当然会告诉你,如果你只是花了一些时间。 –

相关问题