What is Muon
Microservices today are optimised for building systems that can continue to change as you need them to. To achieve this, you decompose an application into its component parts, then recompose it back together again using some form of integration technology. The most common form of integration today is RPC based, whether HTTP, gRPC or one of its friends.
RPC is a fairly simplistic model for integration, with well known flaws and foibles. The other options, messaging and event collaboration are much harder to get started with, and so are often avoided until the "v2 rewrite". Muon lets you adopt messaging and events from the start of a project, by making it easy to do the right thing with them.
Muon is fully polyglot and enables you to build and use much richer message based APIs to recompose your distributed system in highly performant, rich communication styles, beyond RPC.
Muon Spring lets you use, expose and interact with these APIs in various forms and gives helpers for using them in a Spring project. It has particular support for using persisted event streams as described at https://github.com/muoncore/stack-event
The Muon Event Protocol provides a muon api for creating and consuming persisted event streams. These can be used to implement Event Sourcing, stream processing and other techniques.
Muon Spring uses this API to provide a set of DDD patterns. Notably :-
Event Sourced Aggregates
Stream Processed Views
It enables you to build highly complex transactional systems that are naturally distributed, event oriented and give event based transactional semantics.
These integrate well with the other Muon APIs, enabling you to interact easily with other services written in other languages.