Azure Service Bus:通过带有内置重试策略的消息泵接收的瞬态错误(例外)。为什么?

时间:2014-11-11 22:16:10

标签: azure queue message-queue azureservicebus retrypolicy

我一直在阅读2013年4月推出的Event-Driven Message Programming ModelOnMessageOptions.ExceptionReceived Event,内置RetryPolicy(2013年5月,RetryPolicy.Default),{{3 (2011)已过时,等等(见下)。

我一直在监控通过消息泵收到的异常,以了解暂时性错误,我每天都会收到 MessagingCommunicationExceptions 。这The Transient Fault Handling Application Block(更新日期:2014年9月16日)推荐以下内容:

  

此异常表示可以表现出来的通信错误   当从消息传递客户端到服务总线的连接时   基础设施无法成功建立。在多数情况下,   如果存在网络连接,则可将此错误视为   短暂的。客户端可以尝试重试具有的操作   导致了这种类型的例外。也建议你   验证域名解析服务(DNS)是否可操作   因为此错误可能表示目标主机名不能   解决。

我的理解是,在版本2.1(2013)之后,没有额外的代码可用于处理服务总线上的瞬态错误。除非我的前提是错误的,为什么我每天都会收到瞬态错误?是否应忽略通过消息泵收到的异常?如果忽略,我只能假设意外的异常也会被忽略..我当然不希望这种情况发生。

Microsoft.ServiceBus的版本是2.4.0.0

也感兴趣:articleupgrading Windows Azure Service Bus from 1.x to 2.0 - Retry PolicyIntroducing the Event-Driven Message Programming Model for the Windows Azure Service BusWhat's New in the Azure SDK 2.0 Release (April 2013)What's New in the Service Bus 2.1 Release (May 2013)

1 个答案:

答案 0 :(得分:5)

正式回答here。简而言之,在重试尝试后,异常会出于监控目的而冒泡。长期:

  

从ExceptionHandler回调中获得的瞬态异常意味着   在重试尝试后,这些异常会被破坏。你应该   记录它以进行监控。如果需要,请采取行动。对于   例如,如果您的客户失去了您应该期望的网络连接   通过处理程序流出的大量通信异常。   在这种情况下,您可能需要采取适当的措施来解决问题。所以   问题的答案“我应该忽略它们吗?”真的取决于   条件。 - Serkant Karaca,微软