Muster veranstaltungsvertrag

Es gibt zwei Haupttypen von Architekturkomponenten innerhalb der Brokertopologie: eine Brokerkomponente und eine Ereignisprozessorkomponente. Die Brokerkomponente kann zentralisiert oder föderiert werden und enthält alle Ereigniskanäle, die innerhalb des Ereignisflusses verwendet werden. Die in der Brokerkomponente enthaltenen Ereigniskanäle können Nachrichtenwarteschlangen, Nachrichtenthemen oder eine Kombination aus beidem sein. Die Abwärtskompatibilität kann ein Problem sein, insbesondere bei der Arbeit mit Ereignisspeichern und Protokollen oder Nachrichtenwarteschlangen, da Nachrichten weiterhin während des Fluges sein oder zu einem späteren Zeitpunkt wiedergegeben werden können. Die Verbraucher müssen diese Nachrichten noch verarbeiten können, auch wenn der Anbieter sie nicht mehr veröffentlicht. Der Dispatcher ist das zentrale Objekt des Ereignisdispatchersystems. Im Allgemeinen wird ein einzelner Dispatcher erstellt, der eine Registrierung von Listenern verwaltet. Wenn ein Ereignis über den Dispatcher gesendet wird, benachrichtigt es alle Mithörer, die mit diesem Ereignis registriert sind: Alles geschah bisher am Verbraucherende. Wir müssen den Vertrag mit dem Produzenten der Nachricht teilen, um ihn zu validieren. In der Spezifikation des Nachrichtenpakts wird der Anbieter als Dienst definiert, der Ereignisse in Form von Nachrichten ausgibt.

Verbraucher abonnieren bestimmte Ereignisse und verarbeiten die entsprechenden Nachrichten. Dies funktioniert gut, wenn Nachrichten Ereignisse sind, genau wie das OrderPlaced-Ereignis aus unserem Beispielshop. Auch über die Verbindung mit dem Design durch Vertrag hinaus wird CQS von seinen Anhängern als eine vereinfachende Wirkung auf ein Programm betrachtet, das seine Zustände (über Abfragen) und Zustandsänderungen (über Befehle) verständlicher macht. [Zitat erforderlich] Hier ist ein Beispiel für einen Ereignishandler im CustomerService, der Order-Ereignisse abonniert: Der Dispatcher registriert automatisch den Abonnenten für jedes Ereignis, das von der getSubscribedEvents()-Methode zurückgegeben wird. Diese Methode gibt ein Array zurück, das von Ereignisnamen indiziert ist und dessen Werte entweder der anzuwendende Methodenname oder ein Array sind, das aus dem aufzurufenden Methodennamen und einer Priorität besteht (eine positive oder negative Ganze nebenlegen, die standardmäßig 0 beträgt). Es ist möglich zu erkennen, ob ein Ereignis mit der isPropagationStopped()-Methode beendet wurde, die einen booleschen Wert zurückgibt: Pub/Sub ist ein asynchroner Messagingdienst, der Dienste entkoppelt, die Ereignisse von Diensten erzeugen, die Ereignisse verarbeiten. Weitere Details zum Pub/Sub-Modell finden Sie hier. Kunden und Bestellungen ist ein Beispiel für eine Anwendung, die mit Event Sourcing und CQRS erstellt wird.

Die Anwendung ist in Java geschrieben und verwendet Spring Boot. Es wird mit Eventuate erstellt, einer Anwendungsplattform, die auf Event Sourcing und CQRS basiert. EventDriven Architecture ist eine Softwarearchitektur und ein Modell für den Anwendungsentwurf. Es handelt sich um ein sehr beliebtes verteiltes asynchrones Architekturmuster, das zur Erstellung hochskalierbarer Anwendungen verwendet wird. Eine ereignisgesteuerte Architektur ist lose gekoppelt, da Event-Produzenten nicht wissen, welche Ereignisse Verbraucher auf ein Ereignis hören, und das Ereignis nicht weiß, welche Folgen sein Auftreten hat. Anstatt einfach den aktuellen Status jedes Auftrags als Zeile in einer ORDERS-Tabelle zu speichern, behält die Anwendung jede Reihenfolge als eine Folge von Ereignissen bei. Der CustomerService kann die Bestellereignisse abonnieren und seinen eigenen Status aktualisieren. Einer der schwierigsten Aspekte des ereignisgesteuerten Architekturmusters ist die Erstellung, Wartung und Governance der Ereignisprozessorkomponentenverträge. Jedem Ereignis ist in der Regel ein bestimmter Vertrag zugeordnet (z. B. die Datenwerte und das Datenformat, die an den Ereignisprozessor übergeben werden).

Es ist von entscheidender Bedeutung, wenn Sie dieses Muster verwenden, um sich auf ein Standarddatenformat (z. B. XML, JSON, Java Object usw.) festzulegen und von Anfang an eine Vertragsversionsrichtlinie einzurichten.

JDouwes

This entry has 0 replies

Comments are closed.