2011-09-05 4 views
3

MDB에서 트랜잭션 재시도 간격을 제어 할 수 있습니까? 그렇다면 예제를 제공하거나 설명서로 이동하십시오. 우리는 MDB 거래에 3 분의 시간 간격을 설정하려고합니다. 쿼리가 \ 첫 번째 시간에 실패하면 3 분이 경과 한 후 다시 시도하기를 원합니다.MDB 트랜잭션 재시도 간격

답변

3

바 이람;

Message Redelivery에 대한 호넷 문서를보십시오. 고려해야 할 문제는 다음과 같습니다.

  • 3 분으로 표시 한 재 전달 지연.
  • 메시지를 다시 전달해야하는 횟수입니다.
  • 당신이 무기한이 될 수있는 마지막 재 전달 시도가 실패 할 때 발생하는 마지막 작업을 다시 전송하지을 선택하는 경우 :
    • 드롭 메시지를.
    • 지정된 DLQ에 메시지를 큐에 넣습니다.
    • 다른 큐에 메시지를 큐에 넣습니다.

      지연된 재전송은 어드레스 구성 설정에 정의 된 재전송 지연 설정

.

예 :

예 :

<!-- delay redelivery of messages for 3m --> 
<address-setting match="jms.queue.exampleQueue"> 
    <redelivery-delay>300000</redelivery-delay> 
</address-setting> 

이것은 어드레스 설정 구성으로 DLQ 구성을 지정하여 선언적으로 정의 될 수

최대 redeliveries 수와 DLQ 구성 설정 :

<!-- undelivered messages in exampleQueue will be sent to the dead letter address 
    deadLetterQueue after 3 unsuccessful delivery attempts 
    --> 
<address-setting match="jms.queue.exampleQueue"> 
    <dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address> 
    <max-delivery-attempts>3</max-delivery-attempts> 
</address-setting> 

지정된 재 배달 실패 횟수 이후에 메시지를 삭제하려면 메시지 머리글 값 "JMSXDeliveryCount"을 확인하고 그 수가 최대 재전송과 동일한 경우 예외를 무시하고 트랜잭션을 커밋하십시오.

+0

재생 니콜라스에 감사드립니다. 우리는 hornetq와 함께 jms를 사용하고 있습니다. – vairam

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 큐에있는 메시지 수를 볼 수있는 API가 있습니까? 그래서 우리는 대기열에있는 메시지를 봅니다. – vairam