Apache EventMesh is a fully serverless platform used to build distributed event-driven applications and last month has graduated to Top-Level Project of Apache Software Foundation.
EventMesh uses a publish/subscribe pattern to enable serverless, event-driven capabilities for a wide variety of components and applications. An event mesh is a network of event brokers that enable the distribution of event information across applications, cloud services, and devices within an enterprise. Following the principles of event-driven architecture, events are used as the primary means of communication between various components rather than traditional request/response interactions. An event mesh enables an event-driven exchange of information between microservices and applications.
The main features of EventMesh are: Compatibility with other cloud-based systems and applications since it is built on CloudEvents specification; Extensible middleware by connectors that is compatible with a wide range of messaging systems and data stores such as Apache RocketMQ, Apache Kafka, Apache Pulsar, RabbitMQ, Redis; Filtering and transformation capabilities that enable users to selectively route and transform events based on their content and metadata; Serverless workflow engine that enables users to build scalable, event-driven applications with complex orchestration.
It also provides an SDK for Java to integrate EventMesh in a Java application. The SDK supports sending and receiving synchronous, asynchronous, and broadcast messages in TCP, HTTP, and gRPC protocols. The SDK implements EventMesh Message, CloudEvents, and OpenMessaging formats. Support for Rust language was also added since the release of version 1.7.0.
The image below shows the EventMesh event orchestration:
EventMesh uses the Serverless Workflow DSL to describe its workflow. CNCF Serverless Workflows defines a vendor-neutral, open-source, fully community-driven ecosystem for defining and executing DSL-based workflows targeting the serverless technology domain. Based on that specification, a workflow consists of a set of states used to describe control flow logic and is described using the AsyncAPI specification (similar to the OpenAPI specification used for RESTful applications).
The code snippet below represents an example of serverless workflow:
asyncapi: 2.2.0
info:
title: Order Service
version: '0.1.0'
channels:
order/inbound:
publish:
operationId: sendOrder
message:
$ref : '#/components/Order'
order/outbound:
subscribe:
operationId: processedOrder
message:
$ref : '#/components/Order'
Apache EventMesh was initially developed at China’s WeBank and first open-sourced on GitHub in September 2019. It was the first Chinese fintech-founded project to make it into the Apache Incubator.
The Apache Software Foundation, founded in 1999, is the world's largest open-source foundation, stewarding 227M+ lines of code and providing more than $22B+ worth of software at 100% no cost.