Als Demonstration und Proof-of-Concept habe ich unter github.com/knalli/task-worker ein Projekt gestartet, welches mit Hilfe von Spring Integration und einem Message Broker separate Tasks ausführen kann.

Derzeit ist der Task-Daemon noch recht dumm gestaltet (das sollte er auch bleiben, um die Komplexität nicht zu verschärfen), und kann nur 2 simple Aufgaben erledigen:

  • Aus einer XML und XSL Datei eine PDF via Apache FOP erzeugen
  • Einen Prozess aus einer executable und endlich vielen Argumenten starten.

In Zukunft wird mit Sicherheit noch ein E-Mail-Plugin hinzukommen.

Technisches
Das Framework Spring Integration ist ein Submodul der großen Spring Familie und implementiert das Messaging Pattern in Form von Channels, Gateways und Adaptern. In diesem Fall wird als Verknüpfungseinheit zwischen den beiden Integrationspunkten (Client, Server) der Message Broker RabbitMQ verwendet, welcher AMQP implementiert.

Dem Projekt einen ähnlichen Ansatz verfolgt ein anderes Projekt auf GitHub. Der Autor hat darüber auch einen lesenswerten Hintergrundartikel geschrieben.