Warteschlange implementiere

Samidar

Grünschnabel
ich habe 2 Aufgaben: "a:=account aktiviere" und "b:=punkt an baum fügen"

Beide aufgaben sind sehr kompliziert durchzuführen und können einige zeit dauern, besonders aber darf auf gar keinen fall inkonsistenz auftreten und es ist äußerst wichtig dass die aufgaben geordnet ausgeführt werden, deswegen hab ich es folgend implementiert:

der kunde kann entweder a oder b ausführen.

dann wird es in eine Tabelle tasks eingefügt:

id| taskname | costumerID

zum beispiel

id| taskname | costumerID |
1 a(acc activate) 2
2 a 3
3 b 2



Nun habe ich eine stored prrocedure in mysql geschrieben, die die älteste zeile auswählt (kleinste id), die erforderliche aktion durchführt und danach löscht bis die task tabelle leer ist.
in 5 min intervallen wird die methode wieder ausgeführt

Nun wollte ich fragen ob diese implementation so in ordnung ist? und wen n nein wie ich das professioneller machen kann.
 
Sieht für mich wie eine elegante Lösung aus.

Das einzige was mir nicht gefallen würde ist die Sache mit den 5 Minuten, weil ein Anwender ggf. trotz leerer Warteschlange 5 Minuten warten muss, bis seine Aufgabe auch nur begonnen wird. Außerdem braucht man für diese Zeitsteuerung irgenwas externes wie z.B. 'nen Cronjob. Man könnte das mit einem Insert-Trigger auf die Tabelle `tasks` lösen, welcher die Stored Proc. aufruft.
 
ein insert trigger wäre hier zwar elegant erfüllt, deann allerdings nicht die anforderung der serialisierung, es könnte ja sein dass der erste auftrag länger dauert als der 2. und dann würde beides gleichzeitig ausgeführt werden. ich müsste irgendwie prüfen ob schon eine stored prcedure am laufen ist.
 

Neue Beiträge

Zurück