Spring Taskliste abarbeiten - Postgres Table als Queue?

TeaCups

Mitglied
Hallo,

ich hab die Aufgabe an nem Stichtag PDFs an User schicken zu können, via SOAP call.

Verwende Postgres und hab mir gedacht, einfach eine Tasktabelle zu erstellen:

TaskId | EmpfaengerId | PDF | Datum | Status
1, user_324, meinPdf.pdf, 01.06.2022, offen
2, user_234, meinPdf2.pdf, 02.06.2022, offen
...

Den Job lasse ich minütlich laufend via Select statement die offenen tasks abholen, den SOAP call machen und dann den status entsprechend updaten.

Wäre das grundsätzlich so praktikabel? Oder wäre das Quatsch, nen Postgres table also Queue zweckszuentfremden?

Danke im Voraus
 

KonradN

Super-Moderator
Mitarbeiter
Ich denke, dass sich dies nicht pauschal so sagen lässt, da die Anforderungen nicht bekannt sind.

Aber die Lösung bietet viele Features, die bei vielen Anforderungen notwendig sind. Und wenn bereits eine solche Datenbank im Einsatz ist, dann ist das durchaus eine valide Designentscheidung.

Was den Ablauf angeht, muss man natürlich schauen, was Sinn macht und was nicht:
a) SOAP - ihr setzt noch auf SOAP? REST ist nicht im Fokus?
b) die offenen Tasks gibst Du zurück? Wieso nicht nur den nächsten oder die nächsten x Elemente?
c) Ggf. ist hier dann auch zu überlegen, wie man ggf. mit mehreren Clients die Emails versenden kann. Dann wäre der Zugriff transaktionsgesichert und einClient fragt nach einem Datensatz. Die Anfrage selbst läuft in einer Transaktion, der nächste Datensatz wird markiert als an den Client gegeben und dann an den Client geschickt. Nach Abarbeitung wird der Datensatz als abgearbeitet markiert.
d) Man kann auch überlegen, was man so alles an Tools im Einsatz hat. Es kann z.B. interessant sein, hier auf vorhandene Tools zurück zu greifen statt selbst Code zu schreiben (Frage sind aber auch dien Anforderungen. Wenn es kaum Anforderungen gibt und c) schon Overkill war, dann entfällt dieser Punkt aus meiner Sicht auch.

Das sind einfach paar Punkte, die mir jetzt so durch den Kopf gegangen sind und die ich relativ ungefiltert nieder geschrieben habe.
 

TeaCups

Mitglied
Vielen Dank für die hilfreiche Antwort!

Jep leider gezwungermaßen mit SOAP. Wie es scheint ist Postgres nicht ganz ungeiegnet für simple queues, ich werde wohl mit select for update bzw skip locked arbeiten um das gleichzeitige Arbeiten zu ermöglichen.

Abholen und abarbeiten würde ich nur offene Tasks, halt in batches, und dann mit neuem Status wieder ablegen oder gar löschen.

Die Anforderungen selbst sind simpel eigentlich: am Tag X soll pdf Y and Empfänger Z geschickt werden, und davon gibts tägl. höchstens 1000.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Servlets nacheinander abarbeiten Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben