Was für Pattern gibt es eigentlich für asynchrone Verarbeitung, wenn die Anwendung gleichzeitg in mehreren Instanzen läuft (Load-Balancing/Skalierung)? Hier im Kontext Spring-Boot
Oft man hat ja Bedarf in Enterprise Anwendungen Dinge nachgelagert / im Hintergrund auszuführen. Dafür kann man natürlich einen Batch schreiben und einplanen. Aber alternativ ist eine Scheduled Bean oft auch sinnvoll. Da gibt es nur das Problem, dass so eine Anwendung oft ja alleine aus Load-Balancing Gründen in mehreren Instanzen läuft. Standardmäßig ist die Scheduled Bean dann auf allen Instanzen aktiv und habe ich die gleichen Herausforderungen wie bei Multithreading und muss sicherstellen, das Dinge nur 1x abgearbeitet werden.
Das hört sich für mich jetzt nicht nach einem exotischen Problem an - gibt es da nicht was von Ratiopharm aka - Standard-Patterns? Klar, ich kann mit Locks auf der DB arbeiten oder versuchen sicherzustellen, dass die Abarbeitung idempotent ist so dass eine doppelte Abarbeitung keine Probleme macht - aber so richtig toll sind die beiden Varianten nicht.
Oft man hat ja Bedarf in Enterprise Anwendungen Dinge nachgelagert / im Hintergrund auszuführen. Dafür kann man natürlich einen Batch schreiben und einplanen. Aber alternativ ist eine Scheduled Bean oft auch sinnvoll. Da gibt es nur das Problem, dass so eine Anwendung oft ja alleine aus Load-Balancing Gründen in mehreren Instanzen läuft. Standardmäßig ist die Scheduled Bean dann auf allen Instanzen aktiv und habe ich die gleichen Herausforderungen wie bei Multithreading und muss sicherstellen, das Dinge nur 1x abgearbeitet werden.
Das hört sich für mich jetzt nicht nach einem exotischen Problem an - gibt es da nicht was von Ratiopharm aka - Standard-Patterns? Klar, ich kann mit Locks auf der DB arbeiten oder versuchen sicherzustellen, dass die Abarbeitung idempotent ist so dass eine doppelte Abarbeitung keine Probleme macht - aber so richtig toll sind die beiden Varianten nicht.