2014-11-11 16 views
2

OnMessageOptions.ExceptionReceived Event, RetryPolicy (2013 년 5 월, RetryPolicy.Default), The Transient Fault Handling Application Block (2011) 및 더 많은 정보 (하단 참조)가 소개 된 Event-Driven Message Programming Model에 대한 글을 2013 년 4 월에 소개했습니다.Azure 서비스 버스 : 재시도 정책이 내장 된 메시지 펌프를 통해 수신 된 일시적인 오류 (예외). 왜?

나는 일시적인 오류에 대해 메시지 펌프를 통해받은 예외를 모니터링했으며 매일 MessagingCommunicationExceptions을 받았습니다. 이 article (업데이트 : 2014년 9월 16일), 다음을 권장합니다

이 예외는 서비스 버스 인프라 메시징 클라이언트에서 성공적으로 연결 할 수없는 경우 자체 을 나타낼 수있는 통신 오류 신호를 보낸다. 대부분의 경우 에서 네트워크 연결이 제공되면이 오류는 transient로 처리 될 수 있습니다. 클라이언트는 이있는 유형의 예외 작업을 다시 시도 할 수 있습니다. 이 오류는 대상 호스트 이름이 일 수 없음을 나타낼 수 있으므로 도메인 이름 확인 서비스 (DNS)가 작동하는지 인지 확인하는 것이 좋습니다.

버전 2.1 (2013) 이후 서비스 버스에서 일시적 오류를 처리하기 위해 작성하는 추가 코드가 없다는 것을 이해합니다. 전제가 잘못되어 있지 않는 한, 왜 매일 과도기 오류가 발생합니까? 메시지 펌프를 통해 수신 된 예외를 무시해야합니까? 무시한다면 예상치 못한 예외도 무시된다는 가정 만 할 수 있습니다. 물론 그런 일이 발생하기를 원하지 않습니다. upgrading Windows Azure Service Bus from 1.x to 2.0 - Retry Policy, Introducing the Event-Driven Message Programming Model for the Windows Azure Service Bus, What's New in the Azure SDK 2.0 Release (April 2013), What's New in the Service Bus 2.1 Release (May 2013), Transient Fault Handling : Microsoft.ServiceBus의

버전의 관심 또한 2.4.0.0

입니다.

답변

4

공식적으로는 here입니다. 간단히 말해서 은 재 시도 후에 모니터링 목적으로 예외가 발생합니다. 긴 년 :

과도 예외는 ExceptionHandler 콜백에서 얻는 그 예외가 다시 시도 후 최대 bubled된다 의미한다. 그냥 모니터링을 위해 기록하십시오. 필요한 경우 조치를 취하십시오. 예를 들어 클라이언트의 네트워크 연결이 끊어지면 처리기를 통해 많은 수의 통신 예외가 발생할 것으로 예상됩니다. 이러한 경우 문제를 해결하기 위해 적절한 조치를 취해야 할 수 있습니다. 그래서 질문에 대한 대답은 "나는 그들을 무시해야합니까?" 실제로 조건에 따라 다릅니다. - Serkant Karaca, Microsoft