I've configured my ActiveMQ client not to acknowledge messages. This is because I want the messages redelivered if the user stops and restarts the client app. The messages expire in 6 minutes anyway. So any older messages *shouldn't* be delivered.
I notice in my $ACTIVEMQ_HOME/data/kahadb directory there are files named db-N.log where N is a sequential number starting at 1, and these are all 33 Megabytes in size. When N gets to 300+, we see a huge performance hit in the apps that use the broker – even though we still have plenty of free disk space. The only way I've found to rectify the performance problem is to delete the contents of the kahadb directory and restart ActiveMQ. This fixes the problem temporarily until the log files increase to over 300 again. When N > 300, the modification times of lower-numbered files are significantly older. If the messages expire after 6 minutes, what purpose do these older db-N.log files serve? What can I do to prevent the performance degradation as these db-N.log files build up? What can I do to prevent these files from accumulating in the first place? This article: http://activemq.apache.org/why-do-kahadb-log-files-remain-after-cleanup.html suggests the problem occurs because there are un-acknowledged messages causing the files to still be “in-use”. So I could probably eliminate the *.log file accumulation by acknowledging the messages, but I cause another problem in doing so, in which messages will not be not redelivered if the client is restarted. For the purposes described in my first paragraph, the messages are deliberately not acknowledged. Can I acknowledge messages and yet still have the unexpired messages redelivered if my client app is restarted? Or can I safely delete the log files that are significantly older than 6 minutes? Mark -- View this message in context: http://activemq.2283324.n4.nabble.com/db-N-log-files-accumulating-tp4654843.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.