【问题标题】:HornetQ persistence on Jboss EAP 6.1Jboss EAP 6.1 上的 HornetQ 持久性
【发布时间】:2015-09-24 16:13:15
【问题描述】:

所以我在 Jboss 上使用 HonetQ,但遇到了问题。现在,如果 jms 消息到达我们的队列并且突然发生崩溃或重新启动,我们所有的消息都将丢失。我已阅读有关在队列上启用持久性的信息,但正如我所见,此参数默认为 true。我已经阅读了其他用户提出的几个问题,例如“您在哪里使用持久性?”和“是否启用了持久性?”。他们所指的这种坚持到底是什么?在队列级别?还是有像 Hornet/Jboss 这样的更高级别的配置?

希望你能帮忙!

【问题讨论】:

    标签: java jakarta-ee jms jboss7.x hornetq


    【解决方案1】:

    关于jboss hornetQ是在jboss配置的消息域中配置的(standalone/domain.xml)

     <subsystem xmlns="urn:jboss:domain:messaging:1.1">
            <hornetq-server>
                <persistence-enabled>true</persistence-enabled>
                [...]
    

    您也可以在发布时将其设置在消息本身上

    messageProducer.send(objectMessage, DeliveryMode.PERSISTENT, priority, timeToLive);
    

    还要确保队列没有配置durable标志为false

    <jms-queue name="myQueueName">
         <entry name="queue/myQueueName"/>
         <entry name="java:jboss/exported/jms/queue/myQueueName"/>
    </jms-queue>
    

    What is the meaning of 'durable' attribute for JMS Queue in JBoss 7 with HornetQ?

    【讨论】:

    • 关于队列的建议我已经有了,standalone.xml 也有。我会尝试在消息上设置它。还有其他想法吗?消息在重新启动时不断从队列中消失
    • 也许您正在清理 data/messagingjournal 目录?你怎么知道消息从队列中消失了?您确定它不是处于“发货中”状态吗?
    • 我正在通过jboss的管理控制台查询队列数据。在那里我可以看到消息计数为 1 或其他,然后在重新启动后又回到 0。我如何验证“发送时”?
    • 实际上递增然后回到0的字段是队列数据上的“消息添加”
    • 是的,这很正常,在服务器启动时重新创建队列,并且添加的消息为 0。您的消息应该在 message-count(当前在队列中)或 deliveryCount(当前在传递中) .对于投递计数器,注意消费者可能一次获取多条消息(根据消费者窗口大小参数)
    【解决方案2】:

    HornetQ 持久性是使用hornetq-configuration.xml 中的persistence-enabled 参数配置的。它应该默认为 true,但也许明确设置它会解决您的问题。

    阅读更多关于它的信息here

    【讨论】:

    • 试过了,但消息在重新启动时不断从队列中消失。但感谢您的快速帮助
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多