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.