Mendix 9 Spotlight: Aufgabenwarteschlange | Mendix

Direkt zum Inhalt

Mendix 9 Spotlight: Aufgabenwarteschlange

Mendix 9 Release-Grafik

Mit Mendix 9 führten wir die Aufgabenwarteschlange Damit können Sie Microflows oder Java-Aktionen asynchron und verteilt ausführen. Mit dieser Funktion können Sie leistungsstarke Stateless-Apps erstellen, ohne sich Gedanken über Synchronisierung und Aufgabenverwaltung machen zu müssen.

In diesem Beitrag erzähle ich Ihnen mehr über die Task Queue und wie sie sich vom veralteten Process Queue-Modul unterscheidet. Ich habe auch gefragt Marcel Groenewegherunter, eine Mendix Experte und MVP von ITvisors, der einige seiner ersten Erfahrungen mit der Task Queue mit uns teilt.

Was ist die Aufgabenwarteschlange?

Die Task Queue ist eine horizontal skalierbare Warteschlangenlösung, mit der Sie Ihre Apps zuverlässiger und leistungsfähiger machen können. Sie können lang andauernde Aufgaben im Hintergrund ausführen, um zu verhindern, dass der Benutzer warten muss, die Last auf mehrere Laufzeitinstanzen verteilen und Ressourcen durch die Verwendung mehrerer Warteschlangen optimal zuweisen.

Die Task-Warteschlange wird typischerweise in Fällen verwendet, in denen ein hohes Transaktionsvolumen vorliegt, Tasks lange dauern oder Zuverlässigkeit ist der Schlüssel. Alle Knoten können in die Warteschlange gestellte Aufgaben übernehmen, wodurch die Toolbox effektiv um die Option der horizontalen Skalierung erweitert wird. Aufgaben, die von einem Knoten übernommen werden, der während der Ausführung ausfällt, werden erneut übernommen, sodass Sie weniger von der erfolgreichen Ausführung eines einzelnen Knotens abhängig sind. Da Sie auch Aufgaben aus einem geplanten Ereignis in die Warteschlange stellen können, können Sie die Abhängigkeit eines geplanten Ereignisses von einem einzelnen Knoten umgehen und sicherstellen, dass immer Aufgabenstapel ausgeführt werden.

Fantastisch. Wie fange ich an?

Die ersten Schritte mit der Aufgabenwarteschlange sind ganz einfach. Nachdem Sie eine neue Aufgabenwarteschlange in Studio Pro hinzugefügt haben, können Sie auf einem Mikroflow aufrufen Aktivität, dass der Mikrofluss im Hintergrund ausgeführt werden soll. Nachdem die Aufgabe in die Warteschlange gestellt wurde, wird sie von einer Ihrer Laufzeitinstanzen zur Verarbeitung abgeholt. Schließlich wird sie in die VerarbeiteteWarteschlangenaufgabe Tabelle mit einem Erfolgsstatus, auf dessen Grundlage Sie weitere Logik implementieren können.

Screenshot der Aufgabenwarteschlange in Mendix 9
So machen wir es.

Für Beispiel

Stellen Sie sich einen Fall vor, in dem ein Administrator aus einer Liste von Rechnungen in der Datenbank PDF- und Word-Dokumente erstellen möchte. Der Benutzer löst durch Drücken einer Taste einen Mikrofluss aus, der in einer Schleife untergeordnete Mikroflüsse aufruft, um die Dateien zu erstellen. Ohne die Aufgabenwarteschlange wird auf der Seite ein Ladebalken angezeigt, bis die Aktion abgeschlossen ist, sodass der Benutzer in der Zwischenzeit nicht mit der App arbeiten kann.

Um dies zu verbessern, können wir angeben, dass die untergeordneten Mikroflüsse über eine Aufgabenwarteschlange ausgeführt werden sollen. Da nun alle Knoten bei der Generierung der Dokumente helfen können, erhält der Benutzer schneller Ergebnisse und wird nicht blockiert, während die Dateien im Hintergrund generiert werden.

animiertes GIF der Aufgabenwarteschlange
Schauen Sie sich all die Hintergrundarbeit an, damit Ihre Schauspieler auf der Bühne glänzen können.

Vergleich mit der Prozesswarteschlange

Es gibt mehrere Unterschiede zwischen der Task-Warteschlange und der veralteten Warteschlange verarbeiten Modul:

  1. Die Task-Warteschlange ist ein nativer Bestandteil von Mendix und erfordert daher nicht mehr, dass Sie zusätzliche Entitäten und Assoziationen einrichten, was die Komplexität Ihres Domänenmodells verringert.
  2. Wenn Sie das toll finden: Die Task Queue ermöglicht auch eine horizontale Skalierung und ist damit die Lösung der Wahl für Umgebungen mit mehreren Instanzen.
  3. Demnächst wird die Task-Warteschlange die automatische Wiederholung von Aufgaben unterstützen; dies ist für später in diesem Jahr geplant.

Erfahrungen mit der Task Queue

Das ist ja alles schön und gut, aber wie funktioniert Task Queue in der Praxis? Ich habe mit Marcel Groeneweg, zertifiziert Mendix Experte bei ITvisoren , Mendix MVP, der bereits mit der Task Queue gearbeitet hat in Mendix 9.

F: Was haben Sie mit der Aufgabenwarteschlange gemacht?

A: Wir haben einige lang laufende Hintergrundprozesse ersetzt, die zuvor aus der Prozesswarteschlange ausgeführt wurden. Diese Hintergrundprozesse sammeln Daten von externen Systemen und verarbeiten sie. Wir verwenden auch eine Warteschlange zum Herunterladen von Bildern. Jedes Bild ist eine separate Aufgabe, um zu verhindern, dass ein fehlgeschlagener Download alle anderen beschädigt, und um die Transaktionsgröße klein zu halten.

F: Wie gefällt es Ihnen bisher?

A: Einfach zu verwenden, die Konfiguration im Modell ist wirklich gut. Nach der Bereitstellung ist keine weitere Konfiguration auf Konfigurationsseiten in der App selbst mehr erforderlich.

F: Wie verlief die Migration vom Modul „Prozesswarteschlange“?

A: Ganz einfach. Konfigurieren Sie einfach eine oder mehrere Warteschlangen, ändern Sie die Mikroflussparameter (entfernen Sie die zusätzliche Entität, die mit der Prozesswarteschlange zusammenhängt) und ersetzen Sie die Prozesswarteschlangenlogik im aufrufenden Mikrofluss durch eine einzelne Mikroflussaufrufaktivität.

F: Wie haben Sie sich auf diese Migration vorbereitet?

A: Die Auswirkungen können leicht ermittelt werden, indem Sie im Modell mit der rechten Maustaste auf das Modul „Process Queue“ klicken und „Verwendungen suchen“ wählen. Für jede Hintergrundaufgabe besteht eine modulübergreifende Verknüpfung von Ihrer Entität zu ProcessQueue.QueuedAction, die bereinigt werden muss. Was übrig bleibt, sind Verweise auf die Entität ProcessQueue.Process für Konfigurations- und Projektsicherheitseinstellungen, die ebenfalls entfernt werden können.

F: Irgendwelche Vorschläge für die Zukunft?

A: Clusterweite Beschränkungen (nur eine Aufgabe gleichzeitig ausführen) und automatische Wiederholungsversuche mit exponentiellen Wiederholungsintervallen wären großartig. Außerdem wäre es praktisch, wenn beim Planen einer Aufgabe in einer Java-Aktion eine Kennung zurückgegeben würde, damit wir sie verfolgen können. Und schließlich wäre es wirklich leistungsstark, wenn man eine Verzögerung oder eine bestimmte Zeit für die Ausführung festlegen könnte.

Fangen Sie an!

In diesem Blog habe ich die Funktionalität der Task Queue behandelt: eine horizontal skalierbare Lösung zur asynchronen Ausführung von Mikroflows. Probieren Sie es aus in Mendix 9 und teilen Sie uns unbedingt Ihre Erfahrungen mit.

Wählen Sie Ihre Sprache