Webhook Trigger bei mehrfacher Ausführung

Hallo zusammen,

wir nutzen in mehreren Projekten Webhook Trigger in Synesty, um Daten aus Shopsystemen oder Drittsystemen zu empfangen (z. B. Statusänderungen bei Bestellungen). Dabei erhalten wir einen JSON-Request, der im Flow verarbeitet und anschließend per API weitergesendet wird.

Ein wiederkehrendes Problem ist, dass während ein Flow läuft, keine weitere Ausführung per Webhook möglich ist. Stattdessen kommt vom Synesty Webhook-Endpoint eine Fehlermeldung zurück („Flow already running“). Wir haben leider keinen Einfluss darauf, wann das Quellsystem seine Webhooks sendet – ein Retry ist dort manchmal auch nicht konfigurierbar oder nicht praktikabel.

Praxisbeispiel:
Ein Webshop sendet mehrere Statusänderungen kurz hintereinander (inkl. JSON Body). Der erste Trigger startet den Flow – aber der zweite Aufruf scheitert, da der Flow noch läuft. Die Information geht damit ggf. verloren.

Feature-Vorschlag:
Wäre es nicht sinnvoll, eine Option direkt im Webhook Trigger anzubieten, um eingehende Requests automatisch zu puffern/queuen, wenn der Flow gerade läuft?

Frage in die Runde:
Wie handhabt ihr solche Szenarien aktuell?
Gibt es bei euch bewährte Best Practices, um webhook-getriggerte Flows robust gegenüber Mehrfachausführungen zu machen?

Wir überlegen aktuell zwischen:

  • einem vorgeschalteten Flow, der nur speichert + nachgelagertem FlowExecute Worker

  • oder einem reinen Queue-System mit Zeitplan-Flow

Aber vielleicht gibt’s ja noch smartere Ansätze.

Danke schon einmal!

Hallo @marco.spittka,

das ist ein leidiges Thema. Eine wirkliche Antwort habe ich leider auch nicht. Wenn der aufrufende Server nicht sehr kulant bei seiner Retry-Policy ist, hat man schlechte Karten. Ich meide meist Webhook-basierte Lösungen genau aus diesem Grund und tendiere zu aktiven Abrufen, wo möglich.

Den Webhook-Flow möglichst minimal zu halten, um folglich auch die Ausführungszeit zu minimieren, ist Synesty-intern die einzige Option, wenn man nicht um den Webhook herum kommt.
Wenn das nicht reicht, müsste man selbst irgendeinen Buffer-Server dazwischen schalten. Damit habe ich mich aber bisher nur theoretisch beschäftigt, das war glücklicherweise noch nie notwendig.

Ich hatte das Thema auch schonmal vor einiger Zeit angebracht. Da war mal angedacht, dass es einen neuen Webhook gibt, der mit einem Datastore verknüpft ist und dort die einzelnen Aufrufe als Zeilen ablegt. Diese kann man dann aus dem Datastore abrufen und verarbeiten, wie man möchte.
Im Endeffekt die „Minimal-Flow“-Lösung, aber direkt von Synesty gestellt und mit Unterstützung für parallele Aufrufe. Das ist aber schon länger her und da hat sich offensichtlich noch nichts ergeben.

Gruß
Gustav

1 „Gefällt mir“