У меня ниже двух jms-очередей, настроенных в JBOSS 7.1.Чтение сообщений из DLQ в Jboss 7
<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), так что я передать туда же текстовое сообщение с вне беспокоясь много о свойствах сообщения.
, пожалуйста, дайте мне знать, мой подход правильный или нет, appricite для лучшего решения.
Нашел ответ для этого. мы имеем свойство следующим образом: message.getStringProperty ("_ HQ_ORIG_ADDRESS"); это свойство дает исходный адрес. – Ananth