Starten von Spring batch job
Ich habe ein problem wo ich brauche, um zu erhalten eine Reihe von Nachrichten aus einem MQ-Warteschlange und schreiben diese in eine Datei und beginnen Sie eine spring-batch-job mit der Datei als input. Jetzt habe ich mir gedacht starten Sie den job mit WLAN @Autowired JobLauncher jobLauncher and @Autowired Job job;
aus der MDB selbst.Aber ich denke, das ist kein guter Ansatz wie spring batch erstellen können eine Reihe von threads und EJB als solche doesnt support multi-threading.
Gibt es eine andere effektive Möglichkeit, dies zu tun ? Ich will nicht zu verwenden, quartz scheduler, oder irgendetwas anderes, da es erhöht die Komplexität. Gibt es eine Schnittstelle in spring batch selbst das startet einen job, sobald eine Datei wird in einem Verzeichnis ? Jeder führt dabei besser würde geschätzt.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Art und Weise zu tun wäre, sich auf ein bisschen Frühling Integration, wo Sie hätten eine Datei, die poller würden Umfrage für eine neue Datei:
Anzupassen
file message
( java.io.Datei ) zu einemfile name
( String ), denn das ist das, was Spring Batch braucht. Diese kann getan werden, mit einem JobLauncher adapter, das ist schon verfügbar von Spring Batch Admin hier:wickeln Sie es um ein
JobLaunchRequest
( das ist nur ein Halter für eineJob
undJobParameters
) und senden diese Anfrage als [eine Nachricht], umJobLaunchingMessageHandler
:dass sich bringen würde, den job.
"- Eingang.Datei" ist ein parameter, der gebunden ist, zur Laufzeit ( also #{...} ):
This can be done with a JobLauncher adapter, that is already available from Spring Batch Admin
umgesetzt werden soll?Ich bin mir nicht sicher, ob ich verstehe, warum haben Sie eine message queue eine message-driven POJO/EJB UND einem batch-job.
Einen Weg, es zu tun ist, um die message-driven POJO/EJB die Arbeit machen. Es ist schon ein asynch Prozess. Sie können den pool der message-driven beans es sind also genügend Arbeiter, um die Last zu bewältigen. Warum Komplexität?
Wenn Sie lieber nicht tun, vergessen Sie die Warteschlange und nutzen Spring Batch auf seine eigenen. Ich würde nicht beides tun.