2016-07-21 8 views

Antwort

1

Es ist einfach eine Möglichkeit, Plugins zu erstellen, die die Kernfunktionalität von Akka erweitern. Sie würden es verwenden, wenn Sie eine universelle Bibliothek erstellen möchten, die möglicherweise auf viele Akka-Projekte angewendet wird. Ein Großteil der Akka-Distribution ist als Erweiterung implementiert. Wenn Sie beginnen, die nicht-triviale Funktion in Akka zu verwenden, werden Sie zweifellos feststellen, dass Sie zumindest das Erweiterungsmuster konsumieren, um Zugriff auf Laufzeitdaten/-instanzen für die Verwendung von Erweiterungen zu erhalten.

Ein Beispiel ist distributed publish and subscribe für Akka Cluster. Jeder Knoten innerhalb des Clusters, der am Pub/Sub teilnehmen möchte, muss genau eine mediator ausführen, die für die Verteilung von Nachrichten über den Cluster verantwortlich ist. So ist mediator ein lokaler Singleton. Das Framework verwaltet das Singleton für die Anwendung, indem es es initialisiert und in seiner Erweiterungsinstanz speichert, die durch Anwenden auf das Aktorsystem abgerufen wird.

0

Eine Erweiterung ist wie ein Singleton, aber an den Aktor-Systemlebenszyklus gebunden, und nicht an die JVM. Das bedeutet, dass es beim Test nicht zwischen den Aktorsystemen leckt, was ein globaler Singleton wäre.

Ein gängiger und einfach zu verstehender Anwendungsfall besteht darin, die Konfiguration in eine anwendungsspezifische, typsichere Struktur Ihrer eigenen Klassen zu zerlegen, anstatt auf die Konfiguration per Schlüssel direkt von der Config API zuzugreifen.

Ein ganzes Stück der eingebauten Akka-Tools sind eigentlich Erweiterungen wie acjay erwähnt.