The Eventuate™ platform consists of a scalable, distributed event store server and client frameworks for various languages and frameworks.
The following diagram shows the key components.
The Event Store has two APIs: a REST API and a STOMP API.
The REST API supports the following operations: - Creating a new entity with an initial, non-empty sequence of events - Updating an existing entity by appending new events - Retrieving the events for an entity by primary key
The STOMP API enables microservices to subscribe to events. Microservices use the STOMP API to create durable, named subscriptions to one or more event types. Events that occur when a subscriber is disconnected are delivered when it reconnects.
The Eventuate client frameworks build on the server APIs to provide a programming language and framework-specific programming model. For example, Eventuate provides frameworks for Java and Scala developers who use the Spring framework.
You use the client framework to write the following components: - Event sourcing-based aggregates that process commands and emit domain events - Services that are invoked by external requests and update aggregates by sending them commands - Event handlers that subscribe to domain events and do one of three things: - Update aggregates - Update materialized views - Invoke external systems
Eventuate makes it easy to implement event-driven, eventually consistent transactions. Click below to how the
Place Order use case is implemented.
Each service consists of various application components that are built using the Eventuate client framework.Order Service consists of the following components:
A Customer with an ID of 8745 already exists in the event store.
A service can easily maintain a materialized view by subscribing to events published by Eventuate. The following diagram shows how a service can maintain a materialized view of a çustomer and their recent orders using MongoDB.
Each customer corresponds to a MongoDB document containing the customer details and recent order.
Customer View Update Service is responsible for updating the materialized view. It defines an event handler that subscribes to the relevant Customer and Order events. When the event handler receives an event, it updates the MongoDB document for that customer.
Customer View Query Service handles a GET request for a customer’s details by simply retrieving the MongoDB document for the customer.
An application can also register event handlers that invoke external systems. For example, an
Order Notification Service can register an event handler for
Order Approved events that send a confirmation email using Amazon SES.
Read about the different versions of Eventuate.