首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >服务总线1.1 (On Prem)消息发送者重试策略无效

服务总线1.1 (On Prem)消息发送者重试策略无效
EN

Stack Overflow用户
提问于 2017-02-16 16:53:49
回答 2查看 402关注 0票数 0

不确定服务总线1.1的重试策略逻辑有什么问题。我们不能使用Azure服务巴士。我已经尝试了几种不同的配置,但仍然没有运气让它着火。它只会移动到例外。

代码语言:javascript
运行
复制
TokenProvider provider = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "<key goes here>");
var retryPolicy = new RetryExponential(TimeSpan.FromSeconds(10), TimeSpan.FromMinutes(3),
                TimeSpan.FromSeconds(10), TimeSpan.FromMinutes(5), 1000);
var _factory = MessagingFactory.Create("<Namespace Address>", provider);
var _sender = _factory.CreateMessageSender("Analytics");
_sender.RetryPolicy = retryPolicy;
var message = new BrokeredMessage("message");
try
{
   _sender.Send(message);
}
catch(Exception e) 
{
    Console.WriteLine(e);
}

为了测试目的,我使重试策略异常庞大。据我所知,它从未尝试过这个信息。我已经测试过各种异常,包括那些确实存在的异常。

我已经阅读了这些帖子和文章:

以前有人遇到过这种事吗?希望我只是错过了一些简单的东西。

EN

回答 2

Stack Overflow用户

发布于 2017-02-16 18:06:46

重试机制是这样工作的

服务总线返回的异常公开IsTransient属性,该属性指示客户端是否应该重试操作。内置RetryExponential策略依赖于MessagingException类中的IsTransient属性,该属性是所有服务总线异常的基类。

检查OperationTimeout

代码语言:javascript
运行
复制
console.WriteLine(_factory.GetSettings().OperationTimeout);

如果值小于maxBackoff,则将OperationTimeout设置为高于maxBackoff

代码语言:javascript
运行
复制
_factory.GetSettings().OperationTimeout = TimeSpan.FromMinutes(6);

创建MessageFactory后

票数 0
EN

Stack Overflow用户

发布于 2017-02-16 22:46:25

我发现这篇博文:

右键单击“解决方案资源管理器”中的项目,并选择“管理NuGet包”。在“搜索”框中键入“瞬态故障处理”,然后单击“搜索”。选择企业库-瞬态故障处理应用程序块包。单击“安装”后,将向项目中添加一组支持瞬态故障处理应用程序块的必要程序集和引用。

在实现接口之后,我成功地执行了重试策略。

但是,我仍然不知道为什么默认的那个不能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42280139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档