【问题标题】:Read messages from DLQ in Jboss 7在 Jboss 7 中从 DLQ 读取消息
【发布时间】:2015-01-07 22:10:26
【问题描述】:

我在 JBOSS 7.1 中配置了以下两个 jms 队列。

<jms-queue name="APP.QUEUE1">
    <entry name="queue/APP.QUEUE1"/>
    <entry name="java:jboss/exported/jms/queue/APP.QUEUE1"/>
</jms-queue>

<jms-queue name="APP.QUEUE2">
    <entry name="queue/APP.QUEUE2"/>
    <entry name="java:jboss/exported/jms/queue/APP.QUEUE2"/>
</jms-queue>

在消费消息时,如果出现问题,消息将进入死信队列,配置如下。

<address-setting match="jms.queue.APP#">
        <dead-letter-address>jms.queue.DLQ</dead-letter-address>
        <expiry-address>jms.queue.ExpiryQueue</expiry-address>
        <redelivery-delay>0</redelivery-delay>
        <max-delivery-attempts>5</max-delivery-attempts>
        <max-size-bytes>10485760</max-size-bytes>
        <address-full-policy>BLOCK</address-full-policy>
        <message-counter-history-day-limit>10</message-counter-history-day-limit>
 </address-setting>

所以我已经成功地将消息传递给 DLQ。

现在我已经为死信队列写了消费者,这样我可以在修复问题后将消息传回。

消费消息的代码如下。

QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
 QueueBrowser browser = session.createBrowser(queue);
 Queue queue1=browser.getQueue();
 Enumeration messageEnum = browser.getEnumeration();
   while (messageEnum.hasMoreElements()) {
        TextMessage message = (TextMessage) messageEnum.nextElement();
       }

从短信中,是否有机会获取源队列(APP.QUEUE1 或 APP.QUEUE2),这样我就可以将相同的短信传回,而不用担心消息属性。

请让我知道我的方法是否正确,以寻求更好的解决方案。

【问题讨论】:

  • 找到了答案。我们有如下属性, message.getStringProperty("_HQ_ORIG_ADDRESS");此属性提供原始地址。

标签: jboss7.x hornetq


【解决方案1】:

找到了答案。 我们有以下财产。 message.getStringProperty("_HQ_ORIG_ADDRESS"); 此属性提供原始地址。

【讨论】:

    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多