16 SPIs and 3 extension points. Your service implements only what differs.
Extensible Architecture
Build Once, Extend for Any Service
Service-specific logic is isolated into three consumer extension points (EP1, EP2, EP3),
each delivered as an independent Maven module. Adding a dependency activates the extension;
switching a transport requires only a dependency swap, with zero changes to business logic.
EP
SPI
Purpose
Default Module
EP1
SwimInboxStore
Persist received AMQP message to a durable inbox store
swim-inbox-store-kafka
EP2
SwimInboxReader
Read from inbox, deserialise envelope, dispatch to pipeline
swim-inbox-reader-kafka
EP3
SwimOutboxRouter
Route validated domain event to output destinations. Fan-out: multiple implementations run in parallel with independent timeouts. Failure in one router does not affect others.
swim-outbox-kafka-dnotam / ed254
Implement Once
Yellow Profile complexity (mTLS, AMQP, subscriptions, resilience) is implemented once in the framework. Services inherit it.
Fan-out Delivery (EP3)
Add any number of SwimOutboxRouter implementations. The framework delivers to all of them in parallel with independent timeouts.
Environment-Aware Provisioning
Dev uses Jolokia JMX for local Artemis. Prod uses Kubernetes Secrets + AMQ Operator. Same security model, different infrastructure.