2017-09-15 20 views
1

픽스 모드에서 메시지를 지속적으로 수신하고 처리가 실패하면 배달을 포기할 때 포기합니다. 그러나 메시지는 즉시 다시 사용 가능하게되고 다시 처리를 위해 수신됩니다. 그것은 재빨리 실패하고 최대 배달 후에 그것은 죽은 글자입니다.Azure 서비스 버스 : 메시지 처리 실패에 대한 지수 재시도 정책을 구현하는 가장 좋은 방법

포기 된 후에 메시지를 릴리스하기 전에 대기 할 주제/구독을 구성하는 방법이 있습니까? 바람직하게는 지수 적 방식으로.

물론 코드를 통해서도 제안을받을 수 있습니다.

답변

0

서비스 버스 구성에서 지수 백 오프를 설정할 수있는 방법이 없습니다. 나는 같은 문제를 경험했으며 다음을 수행했다.

  1. 메시지를 큐에서 빼낸 다음받은 메시지를 표시했다.
  2. try/catch 블록 내에서 처리를 수행하십시오. 예외가있는 경우 향후 일정 시점에 예약 된 배달을 사용하여 새 메시지를 대기열에 추가하십시오.

배달 시도 횟수를 지정하는 클래스에 서비스 버스 메시지 큐 페이로드를 래핑했습니다. 우리는 전달 시도 횟수에 상수를 곱한 다음, 앞으로 예정된 전달을 위해 그 숫자를 현재 날짜 시간에 추가합니다. 시도하려는 배달 시도 횟수를 초과하면 메시지를 명시 적으로 데드 레터 처리합니다.