1
JBOSS 7.1에서 구성된 두 개의 jms 대기열이 있습니다.Jboss 7에서 DLQ의 메시지 읽기
<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"); 이 속성은 원래 주소를 제공합니다. – Ananth