问题标签 [transient-failure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Polly 超时政策说明
我正在尝试使超时策略正常工作。我在集成 api 时有以下要求。
- 创建一个 http 请求来调用 endpoint1 并传递 transactionID 并捕获结果
- 如果 http 请求在 20 秒内没有响应,则发送具有相同 transactionID 的取消请求并捕获结果
对于这个任务,我想使用 Polly,它在我看来是一个很棒的组件,可以帮助处理瞬态故障。但是,由于我对这项技术非常陌生,我只想确定我是否正确实施。
首先,我已经像这样用 Polly 创建了一个超时策略
然后之后我准备执行该政策
我从文档中得到的是,如果timeoutPolicy.ExecuteAndCaptureAsync
委托内部发生超时,Polly 会自动调用onTimeout
委托。正确的?
但是我的问题是:
- 如果在执行委托内部发生异常会发生什么?我应该将那个 polly 结构包装在 try catch 中吗?
- 当我分析策略结果时,我如何了解是否发生超时?
hibernate - 类之间的不正确映射
我有以下课程:
[用户]
[机器人]
[用户.hbm.xml]
[机器人.hbm.xml]
我正在做的应用程序至少需要一个用户才能添加机器人,所以当我尝试添加机器人时,我得到了这个:
有没有人有线索?因为我一直在寻找但我无法理解......我被炸了......
azure - Azure 服务总线:瞬态故障处理
我有一个队列接收器,它从队列中读取消息并处理消息(进行一些处理并将一些数据插入到 azure 表或检索数据)。
我观察到的是,我的处理方法 ( SendResponseAsync()
) 抛出的任何异常都会导致重试,即将消息重新传递到默认值 10 次。
是否可以自定义此行为,即我只重试某些异常而忽略其他异常。就像如果有一些网络问题,那么重试是有意义的,但如果是BadArgumentException(poisson message)
,那么我可能不想重试。
由于ServiceBus
客户端库负责重试,我们可以自定义此行为吗?
这是接收端的代码
sql-server - Azure SQL:提供程序:TCP 提供程序,错误:0 - 信号量超时期限已过期
它类似于这个问题,但它没有修复:TCP Provider: The semaphore timeout period has expired
我正在使用带有重试策略的企业库瞬态故障处理(v 6.x)。我已经使用了多年,这个错误是一个新错误。可能是由于我们的网络服务器上的 Windows 更新(win 2012r2)
因此,由于没有更改 C# 代码,而且我使用企业库已经很长时间了……它必须与 Windows/硬件相关吗?
我发现了这个,说它与winsock相关,还有一些关于usb驱动程序的来源?
vip swaps存在一个已知问题,但是我们在 prem 2012r2 上运行我们自己的 webapps(webforms 和 mvc 应用程序都有这个问题)
这是堆栈跟踪之一:
elasticsearch - 弹性搜索如何带回一个已关闭的节点
我正在经历弹性搜索,并希望从 ES 集群中获得一致的响应。
https://www.elastic.co/guide/en/elasticsearch/reference/2.4/docs-index_.html
和其他一些帖子,可以得出结论,ES 在完成对所有分片(主 + 副本)的写入后返回写入操作成功,而与一致性参数无关。
让我知道我的理解是否错误。
我想知道是否有人知道,弹性搜索如何将节点/分片添加回暂时关闭的集群中。它会在可用后立即开始提供读取请求,还是在提供读取请求之前确保其拥有最新数据?
我寻找上述问题的答案,但找不到任何答案。
谢谢戈帕尔
c# - 对数据库连接失败实施连接重试策略
我有我的云数据库,即 Azure,所以有时我会收到这样的网络相关错误:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
我决定在一段时间后使用Polly重试连接尝试,但我不确定我是否以正确的方式使用它:
据我了解,Polly 的工作方式如下:
第一次尝试:等待 3 秒然后ConnectionManager.OpenConnection(cn)
再次调用
第二次尝试:等待 6 秒,然后ConnectionManager.OpenConnection(cn)
再次调用DbException
第三次尝试:等待 9 秒,然后ConnectionManager.OpenConnection(cn)
再次调用DbException
但如果DbException
再次发生怎么办?它会处理还是发送到我的 catch 子句包装 Process 方法?
我不确定我是否正确理解并正确实施。
我将不胜感激任何帮助:)
c# - 瞬态故障重试逻辑最佳实践
朋友们,我有一个关于围绕 SQL 命令执行实现简单重试策略的问题。
我的问题是:重试循环应该封装连接和事务的构造,还是应该存在于连接内部。
例如:
我在这里所做的是否合适且可以接受,或者重试逻辑是否应该存在于 SqlConnection 构造之外?
c# - 如何使用 Polly 对任意“失败”条件进行重试和瞬态故障处理
我想使用Polly不是检查明显的“失败”,而是检查其他情况。具体来说,我想进行一次(异步)调用,例如httpClient.GetAsync(...)
,出于这个问题的目的,我知道它会成功 - 也就是说,在执行以下操作之后:
response.IsSuccessStatusCode
将true
。
让我们假设然后我做标准:
var content = await response.Content.ReadAsStringAsync();
和
content == { "Name":"Tom", "Age", 30", "ErrorCode":"12345" }
ErrorCode
我希望我的策略逻辑根据响应部分的内容(或不存在或存在)来执行。所以这只是我打的一个电话。
我怎样才能用波莉做到这一点?
microsoft-teams - 无法始终加入 Microsoft 团队中的会议“哦,天哪!您的电话已挂断。”
我花了数周时间研究我可以打开团队但我无法加入会议的问题。我可以与其他团队成员进行临时通话,但会议将在 5-10 秒内中断,并显示错误消息“天哪!您的通话已中断。请重试。”
azure - Azure MSI 身份验证的瞬态错误处理
托管服务身份 (MSI) 身份验证是否存在暂时且值得重试的错误?
通读实现,我可以看到 HttpRequestException 和 Exception 被框架吸收并被重新抛出为 AzureServiceTokenProviderException 而没有内部异常。
我想知道(如果可能出现任何暂时性错误),我是否需要检查异常消息以提取消息中的嵌入式 http 状态代码并重新抛出例如我自己的 AzureServiceTokenProvider瞬态异常,在我的重试逻辑中捕获它。
我最初的问题是 MSI 身份验证是否存在任何已知的瞬时异常,其次是否有任何内置的重试逻辑或推荐做法?