Einzelnen Beitrag anzeigen

generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#1

RetryPolicy - Eine Klasse für robuste Programmierung

  Alt 26. Jan 2020, 19:48
In Rahmen der CodingBott Youtube Videos, ist eine kleine Klasse entstanden, welche ich euch hier vorstellen möchte.

Etwas inspiriert wurde ich durch Polly ein C# Framework (https://github.com/App-vNext/Polly).

Die Klasse hilft euch Dinge erneut zu tun, wenn eine Exception aufgetreten ist.
Beispiele findet ihr in der README bzw. es gibt natürlich Unit-Tests, wo ihr auch reinschauen könnt, wie die Klasse funktioniert.

Grundsätzlich geht es um eine robuste Programmierung. D.h. Ihr ruft einen Webservice an, doch dieser reagiert nicht und es gibt eine Exception.
Mit der Klassen, könnt ihr einfach das 2,3 mal probieren den Service aufzurufen mit z.B. 2 Sekunden zwischen den aufrufen.

Der Quelltext ist hier verfügbar:
https://github.com/codingbott/Bott.RetryPolicy

Bitte gebt mir mal Feedback, ob ihr das brauchen könnt und ob noch weitere Features notwendig sind. Falls Ihr weitere Ideen habt, sind diese natürlich auch willkommen.

Beispiel:

4 mal den Webservice versuchen. Der zweite Versuch 1 Sekunde später. Der dritte 3 Sekunden nach dem zweiten und dann 10 Sekunden für den letzten Versuch.
Klappt der auch nicht wird false zurück gegeben.
Delphi-Quellcode:
if
    TRetryPolicyFactory.GetInstance()
      .WaitAndRetry(1000) // 1 Sekunde
      .WaitAndRetry(3000) // 3 Sekunden
      .WaitAndRetry(10000) // 10 Sekunden
      .Execute(
          procedure()
          begin
            // webservice aufruf hier
          end
      )
then
  // erfolg
else
  // fehlgeschlagen
Man kann auch auf die Exceptions reagieren, durch einen Callback.
  Mit Zitat antworten Zitat