AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte RetryPolicy - Eine Klasse für robuste Programmierung
Thema durchsuchen
Ansicht
Themen-Optionen

RetryPolicy - Eine Klasse für robuste Programmierung

Ein Thema von generic · begonnen am 26. Jan 2020 · letzter Beitrag vom 6. Feb 2020
Antwort Antwort
generic
Registriert seit: 24. Mär 2004
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.
 
ConstantGardener

 
Delphi 10.4 Sydney
 
#2
  Alt 26. Jan 2020, 22:17
Das hört sich sehr hilfreich an, teste ich gleich mal aus.

Danke!
Andreas Schachtner
  Mit Zitat antworten Zitat
TigerLilly

 
Delphi 11 Alexandria
 
#3
  Alt 27. Jan 2020, 10:35
Ja, das ist cool. Allerdings gibt es das + noch mehr zB auch hier:
https://github.com/exilon/QuickLib
  Mit Zitat antworten Zitat
Der schöne Günther

 
Delphi 10 Seattle Enterprise
 
#4
  Alt 27. Jan 2020, 10:44
Oooh, das klingt wirklich interessant.

Grade bei Delphis länglichen anonymen Methoden bin ich weniger ein Freund von Fluent Interfaces, aber wenn ich meinen eigenen Kram gegen etwas austauschen kann gegen etwas das evtl. noch andere verwenden schlafe ich auch gleich viel besser.

Vielen Dank. 👍
  Mit Zitat antworten Zitat
generic

 
Delphi XE5 Professional
 
#5
  Alt 28. Jan 2020, 11:24
Ja, das ist cool. Allerdings gibt es das + noch mehr zB auch hier:
https://github.com/exilon/QuickLib
Oh schön. Falls ihr nicht so wie ich suchen wollt, die Klasse heißt dort TFaultControl und nicht wie in der Readme steht FailControl.

Da sind auch paar andere interessante Klassen bei. Allerdings muss ich auch ein Minuspunkt geben, keine Unit-Tests!
  Mit Zitat antworten Zitat
generic

 
Delphi XE5 Professional
 
#6
  Alt 6. Feb 2020, 14:12
Auf dem CodingBott Youtube Kanal gibt es jetzt ein Video zu dieser Klasse.

Ich quatsche einfach 20 Minuten zum Entwicklungsprozess.
D.h. es ist dieses mal also nicht spannend. Die Techniken sind bereits in anderen Video behandelt.

Punkte sind:
* die Klasse ist test-getrieben entstanden, da es kein Programm gab, welches die Klasse nutzte. Also der Test zum Starten der verschiedenen Funktionen.
* Zeiger auf Funktionen
* Exception Handling
* FluentInterfaces
* Wo ich mich verrannt habe im Konzept, weil mein Delphi zu alt ist. Dynamische Arrays vs. Listen

Hier ist der Link zum Video:
https://youtu.be/GXx7Ztb5q78
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz