Skip to content

Extend Muon into the world of Spring. Implement Muon apis, especially around events to provide DDD patterns natively in Spring Boot

License

Notifications You must be signed in to change notification settings

muoncore/newton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Master Build

License

Status

muon spring

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

Event Systems

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

  • Distributed Sagas.

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.