API for Mats3: Message-based Asynchronous Transactional Staged Stateless Services.
Extension to the
Mats3 APIwhich adds interception capabilities - all operations for initiation and stage processing can be intercepted.
Java Message Service v1.1 (JMS v1.1) implementation of the
Mats3 Intercept API.
Mats3 interceptor for structured logging over SLF4J, adding several data points using the SLF4J MDC for each initiation, message receive and message send - consists of a single class
MatsMetricsLoggingInterceptor, for which the JMS implementation has special support in that if it resides on the classpath, it will autoinstall.
Mats3 interceptor adding metrics gathering using Spring's Micrometer solution - consists of a single class
MatsMicrometerInterceptor, for which the JMS implementation has special support in that if it resides on the classpath, it will autoinstall.
Mats3 tool that can output an embeddable HTML describing a MatsFactory and all its endpoints, as well as "local statistics", gathered using a Mats Interceptor.
Mats3 wire format solution called "MatsTrace", which defines a set of parameters and structures sufficient to represent an envelope carrying Mats messages, as well as a deser-interface "MatsSerializer" which defines methods between MatsTrace and byte arrays - Employed by the Mats3 JMS Implementation.
An implementation of
MatsTracewhich uses short-named fields to carry all the needed information - meant to be field-serialized using for example Jackson.
Mats3 MatsSerializer implementation using Jackson to serialize between MatsTraceStringImpl and byte arrays - Employed by the Mats3 JMS Implementation.
Mats3 Spring integration ("SpringConfig"), supplying a set of annotations including
@EnableMatsto enable bean scanning for
@MatsClassMappingannotations, simplifying use of Mats3 in a Spring context.
Tooling for handling your application's configuration of a JMS
ConnectionFactoryin different scenarios (development, testing, staging, production) - best explained in the class doc of
ScenarioConnectionFactoryProducer- do note that this should not be the first thing you delve into when trying out Mats!
Implementation of JMS Mats's
TransactionManagerfor the data source aspect.
Mats3 Spring-specific testing tools, for quickly firing up a test-harness using either JUnit or Jupiter (JUnit 5) - read class doc of
Contains a set of helpful tools for testing:
MatsTestBrokerInterfaceto get DLQ'ed messages,
MatsTestHelpfor creation of relevant ids,
MatsTestLatchfor a simple tool to synchronize between the test method and the async Mats endpoints, and
TestH2DataSourcewhich is a small wrapper around H2 to create a database with a test table - mainly used by the API Tests to verify SQL transactions.
Common code for the modules 'mats-test-junit' and 'mats-test-jupiter' - These abstract classes should not be used directly, but rather utilized through the mentioned implementations.
Tool for creating a MQ Broker to easily create a MatsFactory backed by an in-vm MQ Broker, employed by several of the other Mats testing tools - by default uses Apache ActiveMQ, but may be directed to use Apache Artemis instead, or to use an external ActiveMQ or Artemis broker.
Mats3 testing tools for JUnit 4.
Mats3 testing tools for Jupiter (JUnit 5).
Mats3 Utilities - notably the MatsFuturizer, which provides a bridge from synchronous processes to the highly asynchronous Mats^3 services.
JDBC DataSource- with a special "deferred connection proxy" wrapper which is smart to use as underlying DataSource for the SQL-oriented
JmsMatsTransactionManagers, as it elides transactions if the connection is not actually employed within an initiation or stage processing.