我只是在试用Polly CircuitBreakerAsync,它不像我期望的那样起作用。
我在这里做错什么了?我期望下面的代码完成,并说电路仍然关闭。
using Polly;
using System;
using System.Threading.Tasks;
public class Program
{
public static void Main(string[] args)
{
MainAsync(args).GetAwaiter().GetResult();
}
static async Task MainAsync
目前,Polly重试策略独立地退休所有失败的请求。因此,如果有10个请求失败,并且我已经设置了“永远重试”策略,那么每次重试发生时,它都会再发送10个请求,而服务器永远不会恢复。
如果重试成功,如何异步传递所有失败请求并只重试一个请求并恢复正常流?
我不能(不想)使用断路器,因为我的服务是后台工作人员服务,断路器破坏了整个后台服务逻辑。
// Current code with only retry policy
var retry = HttpPolicyExtensions.HandleTransientHttpError().WaitAndRetryForeverAsync(retryN
我正在使用Refit和Polly来调用restful,我想知道Refits的重试策略(如果有的话)是什么?
public static PolicyWrap MyRetryPolicy()
{
// Try few times with little more time between... maybe the
// connection issue gets resolved
var wireServerNetworkIssue = Policy.Handle<WebException>()
我有一个共享的外部资源(比如文件存储),由一群参与者使用。每次向文件存储区发出新请求时,都会创建一个新的参与者,以使用传入的外部系统的引用来填充请求。
当前的方法是为每个参与者创建一个断路器,这一方法不符合这个目的,因为为每个“请求”都创建了一个新的参与者,它在这个外部资源上执行一系列操作。
不理想- CB实例太多;
class MySharedResourceActor(externalResourceRef: ExtSystem) extends Actor with ActorLogging {
val breaker = new CircuitBreaker(context.sy
我正在尝试使用Polly测试连接字符串是否为空。如果它是null,我想使用CircuitBreaker尝试三次,并且消息应该在控制台窗口中输出。
Policy policy = null;
// Break the circuit after the specified number of exceptions
// and keep circuit broken for the specified duration.
policy = Policy
.Handle<NullReferenceException>()
我试图包装两个Polly策略,并希望返回IAsyncPolicy,但这会导致错误,
从Polly.Retry.RetryPolicy < System.Net.Http.HttpResponseMessage>转换为Polly.IAsyncPolicy
public static IAsyncPolicy CreateDefaultRetryPolicy()
{
var timeoutPolicy = Policy.TimeoutAsync(TimeSpan.FromSeconds(180));
var waitAndRetryPo
Polly的Microsoft.Extensions方法通过依赖项注入使用策略,serviceCollection.AddPolicyRegistry()只允许添加已经创建的策略,同时仍然定义ServiceCollection内容,因此其他DI服务实例(如记录器)不可用。
为了解决这个问题,也因为我需要一些关于策略的额外数据,我创建了一个接口,它提供了一个策略:
public interface IPolicySource
{
/// <summary>
/// Name of <see cref="IPolicySource"/> in
我已经集成亚马逊polly到我的一个项目在快速,并要求它的TTS多组文本字符串。当然,我正在使用下面的指令集来播放声音:
builder.continueOnSuccessWith { (awsTask: AWSTask<NSURL>) ->
Any? in
// The result of getPresignedURL task is NSURL.
// Again, we ignore the errors in the example.
let url = awsTask.result!
// Try
我的数据库在云上,即Azure,所以有时我会收到与网络相关的错误,如下所示:
在建立到Server的连接时发生了与网络相关的或特定于实例的错误.找不到或无法访问服务器。验证实例名是否正确,以及Server是否配置为允许远程连接。(提供者:命名管道提供程序,错误: 40 -无法打开到Server的连接)
经过一段时间后,我决定使用重试连接尝试,但我不确定是否以正确的方式使用了它:
public class AddOperation
{
public void Start()
{
using (var processor = new MyProcesso
我有一个由Tomcat提供的Java/JSP web应用程序,它向合作伙伴web服务发出web服务调用以检索数据。合作伙伴服务中使用的技术是未知的。合作伙伴web服务经常长时间中断,并返回一个SocketTimeoutException:
java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at jav