Explore Mats3 using JBang!
MatsJbangKit provides tooling for super simple experimentation with the library!
Message-Oriented RPC
Code fully asynchronous message-based architectures, but reason like blocking RPC.
Dev & Ops happiness
Simple code, easy to understand with great introspection and painless debugging.
Sync-Async bridge
MatsFuturizer enables a sync setting, like a Servlet, to invoke a Mats Endpoint.
MatsBrokerMonitor
Tool for monitoring the message broker, inspect messages and reissue DLQs.
Message-based Interservice Communication is Great!
In a Message-oriented microservice architecture, the individual services connects to a Message Broker and subscribes to queues from which they consume messages. Services also posts messages to these queues, for other services to consume and handle. The broker acts as an intermediary, a post-office, holding the messages from the producers until a consumer is ready to take it. The communication between the services is asynchronous: One service posting a message, and another service consuming a message, are separate operations, not blocking on each other.
Interservice communication using messages has many advantages over traditional synchronous HTTP-based systems. Messaging naturally provides high availability, scalability, location transparency, prioritization, processing transactionality, fault tolerance, great monitoring, simple error handling, and efficient and flexible resource management.
Message-based Architectures Can be Complex
Despite many benefits, developers and architects seems to shy away from message-oriented architectures due to the challenges of implementing and maintaining them. It requires a large mental shift to asynchronous, multi-staged distributed processing, where processing flows often span multiple services and codebases, and the result can be difficult to grasp and manage.
Mats3 Solves the Cognitive Load of Messaging!
Mats3 allows developers to code message-based systems in a way that feels familiar and intuitive, by providing a programming model that appears to be sequential and synchronous. However, under the hood, each step of a Mats Endpoint is actually a separate and autonomous consumer, processor and producer of messages. Systems using Mats3 get to enjoy all the advantages of an asynchronous, transactional and message-oriented architecture, while feeling as simple as if using HTTP - giving you the best of both worlds without the cognitive load!