接続が成功するまで、制御できないサービスへのリモート呼び出しを行う方法を探しています。また、アクションが成功するまでn秒/分ごとに実行されるタイマーを単純に設定したくありません。一連の調査の結果、サーキット ブレーカー パターンが最適であることがわかりました。
Castle Windsor インターセプターを使用する実装を見つけました。唯一の問題は、使い方がわからないことです。このトピックに関して見つけたいくつかの記事から、私が見つけることができた唯一の使用例は、サーキットブレーカーを使用してアクションを1回だけ呼び出すことでした。これはあまり役に立ちません。そのことから、サーキットブレーカーをwhile(true)
ループで使用してアクションを実行する必要があるようです。
Windsor インターセプターを使用して、サーバーを非難することなく、成功するまで外部サービスを呼び出すアクションを実行するにはどうすればよいですか?
誰か足りない部分を埋めてくれませんか?
これが私が思いついたものです
while(true)
{
try
{
service.Subscribe();
break;
}
catch (Exception e)
{
Console.WriteLine("Gotcha!");
Thread.Sleep(TimeSpan.FromSeconds(10));
}
}
Console.WriteLine("Success!");
public interface IService
{
void Subscribe();
}
public class Service : IService
{
private readonly Random _random = new Random();
public void Subscribe()
{
var a = _random.Next(0, 10) % 2421;
if(_random.Next(0, 10) % 2 != 0)
throw new AbandonedMutexException();
}
}
それに基づいて、この概念とそれを適用する方法を理解したと思います。