Wie verwende ich einen Schutzschalter?

Ich bin auf der Suche nach Möglichkeiten, um remote-Anrufe auf services außerhalb meiner Kontrolle, bis eine Verbindung erfolgreich ist. Ich will auch nicht einfach einen timer einstellen, wo eine Aktion ausgeführt jeden n Sekunden/Minuten bis zum Erfolg. Nach ein paar Recherchen scheint es, dass die circuit breaker-Muster ist eine gute Passform.

Fand ich eine Umsetzung, verwendet einen Schloss Windsor Abfangjäger, die genial aussieht. Das problem ist nur, ich weiß nicht, wie es zu benutzen. Aus den wenigen Artikeln, die ich gefunden in Bezug auf das Thema die einzige Verwendung, die ich finden konnte, war, einfach den Schutzschalter rufen Sie eine Aktion nur einmal, das scheint nicht sehr nützlich. Aus, dass es scheint, ich brauche einfach meine Aktion mit dem Leistungsschalter in einem while(true) Schleife.

Wie benutze ich den Windsor-interceptor zum ausführen einer Aktion einen Aufruf an einen externen Dienst, bis es erfolgreich ist ohne das zuschlagen von unseren Servern?

Könnte jemand bitte füllen Sie die fehlenden Teile?

Hier ist, was ich war in der Lage zu kommen mit

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();
    }
}

Basierend auf, dass ich denke, dass ich jetzt verstehen dieses Konzept und wie Sie es anwenden.

  • Diese Implementierung verwendet einen timer, wo eine Aktion, die ausgeführt werden, alle n Sekunden/Minuten bis zum Erfolg.
  • Das ist so eine komplexe Sache zu tun, es passt nicht wirklich in hier eine Antwort auf Stack Overflow. Aber FWIW, 9. Kapitel von meinem Buch erzählt, wie um zu verwenden, einen Leistungsschalter mit einfachen Dekorateure, wie auch Schloss Windsor, und andere Abschnitte enthalten entsprechende Implementierungen für die Einheit und Spring.NET. Es gibt auch den vollständigen code als download zur Verfügung. affiliate.manning.com/idevaffiliate.php?id=1150_236
  • Es gibt auf jeden Fall einiges von zusätzlichen Kenntnisse erforderlich, um vollständig zu verstehen, was passiert ist und wie es zu implementieren, korrekt.
InformationsquelleAutor gcso | 2011-10-06
Schreibe einen Kommentar