java - HornetQ Persistence 不删除文件

标签 java jms wildfly hornetq jms-queue

在我的应用程序中,我注意到 HornetQ 2.4.1 一直在堆积消息日志文件(有时达到数千个。)我正在通过 JMS 队列使用 HornetQ,而我们正在使用 Wildfly 8.2。通常,在启动服务器实例时,HornetQ 将有 3 个消息日志和一个锁定文件。

消息日志文件的堆积在重新启动服务器时导致了问题,我们将看到一条日志:

HQ221014:加载 54%

删除文件时,服务器加载正常。我已经试验了一些,看起来好像这些文件中的消息已经被处理过,但我不确定为什么它们会随着时间的推移继续堆积。

编辑 1:我找到了 this link这表明我们没有确认消息。但是,当我们像这样创建 session 时 connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

我会继续寻找解决方案。

最佳答案

我发现这是由于调用 afterDelivery()< 失败引起的(出于某种原因,我目前认为它与服务器负载或网络挂起有关)/ 方法。我通过不经常打那个队列来解决这个问题。它并不优雅,但它符合我的目的。

查看我在日志中发现的以下 HornetQ 消息:

HQ152006: Unable to call after delivery
javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction. at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.afterDelivery(MessageEndpointInvocationHandler.java:87)

HQ222144: Queue could not finish waiting executors. Try increasing the thread pool size

HQ222172: Queue jms.queue.myQueue was busy for more than 10,000 milliseconds. There are possibly consumers hanging on a network operation

关于java - HornetQ Persistence 不删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757416/

相关文章:

java - JPA merge() 仅更新部分字段。其他变化不被认可

java - MongoDB:游标在 next() 完成之前已关闭

java - 使用 JMSMessageID 从 MQ 队列中删除 JMS 消息

ssl - 如何在 WildFly 9 域模式上设置 SSL?

java - JPA : OpenJPA : The id class specified by type does not match the primary key fields of the class

java - 如何使用 TestNg 记录测试历史?

java - Spring、多线程和 jms

jms - 从 Camel 连接到 WebSphere MQ 服务器时出现 "Channel not defined remotely"问题

java - 从不同线程调用时查询超时

java - WildFly - 创建具有长时间运行的应用程序的应用程序