PDA

View Full Version : Alle 10 Minuten automatisch ein Programm starten



JoergHamacher
11-07-22, 14:59
Hallo,

was ist denn auf der IBMi die einfachste und Resourcen-schonendste Möglichkeit, mit "Bordmitteln" regelmäßig (z.B. alle 10 Minuten) automatisch ein bestimmtes Programm zu starten?
Das Einzige, das mir einfällt, wäre ein eigenes Subsystem, in dem ein spezielles Programm läuft, das alle 10 Minuten"auf die Uhr schaut" und dann das eigentliche Programm aufruft - aber das frisst doch im Laufe des Tages ziemlich Systemresourcen, oder?

Vielen Dank im Voraus für Eure Hilfe,
Jörg

Fuerchau
11-07-22, 15:02
Nö, warum?
Die Frage ist doch, reicht ein Delay(600) oder muss es ab 08:00 Uhr genau im 10-Minuten-Abstand laufen?

JoergHamacher
11-07-22, 15:26
Hallo Fuerchau,

danke für die schnelle Antwort.
Das Programm soll tatsächlich alle 10 Minuten laufen, aber nicht ab 8:00 Uhr, sondern schon ab 6:00 Uhr ;-)

Gewünscht wird, dass wir alle 10 Minuten in einem Webshop-Pool nachsehen, ob dort Bestellungen vorliegen (über einen Request an eine JSON-Web-API, die auf einem remoten Server irgendwo in der Cloud liegt und dann als Response die Bestellungen zurück liefert) und diese dann verarbeiten.

Aber vielleicht ist es ja wirklich ausreichend, das in einer Schleife mit DELAY nach dem jeweiligen AUfurf abzuarbeiten. Das zieht doch nciht wiklich viel Systempower, oder?

Liebe Grüße,
Jörg

Fuerchau
11-07-22, 17:18
Ein Delay pausiert den Prozess absolut und er wird erst nach Ablauf der Zeit geweckt.
Wenn du nun die Aufgabe schnell erledigt ist, wenn nichts vorliegt, kannst du das auch alle 5 Sekunden machen ohne dass das System nenneswert was merkt.
Stelle die folgenden Fragen:
Wie kommen die zu verarbeitenden Daten ins System?
IFS ist da selten eine gute Option, aber eine Datentabelle schon eher.
Bei letzterem kann man auch einen Trigger auf die Tabelle setzen.
Bei Insert einer neuen Information oder beim Update auf einen bestimmten Status (Freigabe) sendet man an eine DTAQ eine Nachricht.
Nun macht dein Job kein DLYJOB sondern liest per QRCVDTAQ und kann sofort loslegen.
Nun kann man sogar als Prestart-Job mehrere dieser Jobs parallel starten und diese arbeiten die DTAQ parallel im "Roundrobin"-Verfahren ab.

Du wirst da Freunde mit gewinnen, wenn die Aufgaben zeitnah erledgt werden.

mk
19-07-22, 16:35
Hallo Fuerchau,

danke für die schnelle Antwort.
Das Programm soll tatsächlich alle 10 Minuten laufen, aber nicht ab 8:00 Uhr, sondern schon ab 6:00 Uhr ;-)

Gewünscht wird, dass wir alle 10 Minuten in einem Webshop-Pool nachsehen, ob dort Bestellungen vorliegen (über einen Request an eine JSON-Web-API, die auf einem remoten Server irgendwo in der Cloud liegt und dann als Response die Bestellungen zurück liefert) und diese dann verarbeiten.

Aber vielleicht ist es ja wirklich ausreichend, das in einer Schleife mit DELAY nach dem jeweiligen AUfurf abzuarbeiten. Das zieht doch nciht wiklich viel Systempower, oder?

Liebe Grüße,
Jörg

Hallo,
fragt doch mal bei dem Shopbetreiber nach ob der euch nicht einfach jede Bestellung per REST API senden kann.
Ist doch einfacher als alle 10 Minuten zu prüfen ob was da ist.
Gruß
Michael

Fuerchau
19-07-22, 17:45
Siehst du doch, die Bestellung sollen mit REST-API abgeholt werden;-).
Aus der Cloud heraus eine REST-API abzufragen/aufzurufen, die in einem lokalen Netz liegt, ist ungleich komplizierter.

programmer400
28-09-22, 08:51
Hätte die gleiche Frage - hat jemand einen Tipp?

programmer400
28-09-22, 08:53
Hätte die gleiche Frage - hat jemand einen Tipp?

Sorry, das Layout des Forums hat sich geändert, habs erst jetzt geschnallt, dass es eh schon Antworten gibt.

holgerscherer
30-09-22, 12:17
vielleicht ist Cronie eine Idee? ;-)

https://kadler.io/2020/12/23/dec-oss-updates.html#

Fuerchau
30-09-22, 13:34
Der cron hatte schon früher den Nachteil, dass nciht geprüft wird ob vorherige Start ggf. noch läuft und ein neuer Start keinen Sinn macht.
Ich habe mir da schon mal ein CMD geschrieben, dass per Scheduler gestartet wird, eine automatische Wiederholzeit hat und max. Anzahl Wiederholungen zulässt und einen beliebigen Befehl zyklisch ausführt.
Das ist einfach händelbar und benötigt keine cryptischen Parameter.