mats3 0.19.9-2023-05-04 API

API for Mats3: Message-based Asynchronous Transactional Staged Stateless Services.
Extension to the Mats3 API which 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 API and 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 MatsTrace which 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 @EnableMats to enable bean scanning for @MatsMapping and @MatsClassMapping annotations, simplifying use of Mats3 in a Spring context.
Tooling for handling your application's configuration of a JMS ConnectionFactory in 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 JmsMatsTransactionManager employing Spring's TransactionManager for 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 MatsTestContext and MatsTestInfrastructureConfiguration.
Contains a set of helpful tools for testing: MatsTestBrokerInterface to get DLQ'ed messages, MatsTestHelp for creation of relevant ids, MatsTestLatch for a simple tool to synchronize between the test method and the async Mats endpoints, and TestH2DataSource which 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.
Wrappers for JMS ConnectionFactory and 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.