# sartrebrasil/messaging-library architecture

> Architecture diagram of the GitHub repository sartrebrasil/messaging-library, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sartrebrasil/messaging-library
- Repository: https://github.com/sartrebrasil/messaging-library

## Overview

messaging-lib provides a shared Java messaging API, provider adapters, an optional polling/processing layer, and Spring Boot integration. The documented consumer workflow is receive, decode, handle, classify failures, and acknowledge, retry, or route to dead letter; redrive is a separate operational capability. Edges below reflect README statements and examples only: no source excerpts were provided, so implementation-level call ownership cannot be verified.

Main entry points: [`messaging-core/src/main/java/com/example/messaging`](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-core/src/main/java/com/example/messaging) (Core API), [`messaging-inbox/src/main/java/com/example/messaging/inbox/InboxConsumer.java`](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/InboxConsumer.java) (Polling consumer), [`messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingAutoConfiguration.java`](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingAutoConfiguration.java) (Boot configuration), [`messaging-aws/src/main/java/com/example/messaging/aws`](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-aws/src/main/java/com/example/messaging/aws) (AWS adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Messaging API"]
  node_core["Core API"]
end

subgraph group_providers["Provider adapters"]
  node_aws["AWS adapter"]
  node_azure["Azure adapter"]
  node_gcp["GCP adapter"]
  node_jms["JMS adapter"]
  node_rabbit["RabbitMQ adapter"]
end

subgraph group_inbox["Inbox processing"]
  node_poller["Polling consumer<br/>[InboxConsumer.java]"]
  node_envelope["Envelope decoding"]
  node_handler["Message handler<br/>[InboxHandler.java]"]
  node_retry["Retry policy"]
  node_outcome["Delivery outcomes"]
  node_idempotency["Idempotency"]
  node_redrive["Dead-letter redrive"]
end

subgraph group_spring["Spring integration"]
  node_starter["Boot configuration"]
  node_inbox_boot["Inbox lifecycle"]
  node_observability["Metrics and health"]
end

node_application(("Application"))
node_cloud_brokers{{"Cloud brokers"}}
node_jms_brokers{{"ActiveMQ brokers"}}
node_rabbit_broker{{"RabbitMQ broker"}}

node_application -->|"uses API"| node_core
node_core -->|"implemented by"| node_aws
node_core -->|"implemented by"| node_azure
node_core -->|"implemented by"| node_gcp
node_core -->|"implemented by"| node_jms
node_core -->|"implemented by"| node_rabbit
node_aws -->|"uses SDKs"| node_cloud_brokers
node_azure -->|"uses SDKs"| node_cloud_brokers
node_gcp -->|"uses SDKs"| node_cloud_brokers
node_jms -->|"connects via JMS"| node_jms_brokers
node_rabbit -->|"uses AMQP"| node_rabbit_broker
node_poller -->|"polls receiver"| node_core
node_poller -->|"decodes envelope"| node_envelope
node_poller -->|"invokes handler"| node_handler
node_poller -->|"guards processing"| node_idempotency
node_poller -->|"classifies failures"| node_retry
node_poller -->|"applies result"| node_outcome
node_outcome -->|"acks or nacks"| node_core
node_redrive -.->|"uses receiver API"| node_core
node_starter -->|"configures providers"| node_core
node_inbox_boot -->|"starts consumers"| node_poller
node_observability -->|"adds health metrics"| node_starter
node_starter -.->|"enables optionally"| node_inbox_boot

click node_core "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-core/src/main/java/com/example/messaging"
click node_aws "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-aws/src/main/java/com/example/messaging/aws"
click node_azure "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-azure/src/main/java/com/example/messaging/azure"
click node_gcp "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-gcp/src/main/java/com/example/messaging/gcp"
click node_jms "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-jms/src/main/java/com/example/messaging/jms"
click node_rabbit "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-rabbitmq/src/main/java/com/example/messaging/rabbitmq"
click node_poller "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/InboxConsumer.java"
click node_envelope "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/EnvelopeReader.java"
click node_handler "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/InboxHandler.java"
click node_retry "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-inbox/src/main/java/com/example/messaging/inbox/retry"
click node_outcome "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/OutcomeApplier.java"
click node_idempotency "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/IdempotencyGuard.java"
click node_redrive "https://github.com/sartrebrasil/messaging-library/tree/main/messaging-inbox/src/main/java/com/example/messaging/inbox/redrive"
click node_starter "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingAutoConfiguration.java"
click node_inbox_boot "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/inbox/spring/InboxLifecycle.java"
click node_observability "https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingHealthAutoConfiguration.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_core toneBlue
class node_aws,node_azure,node_gcp,node_jms,node_rabbit toneAmber
class node_poller,node_envelope,node_handler,node_retry,node_outcome,node_idempotency,node_redrive toneMint
class node_starter,node_inbox_boot,node_observability toneRose
class node_application,node_cloud_brokers,node_jms_brokers,node_rabbit_broker toneIndigo
```

## Components

### Messaging API

- [Core API](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-core/src/main/java/com/example/messaging): `messaging-core/src/main/java/com/example/messaging`

### Provider adapters

- [AWS adapter](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-aws/src/main/java/com/example/messaging/aws): `messaging-aws/src/main/java/com/example/messaging/aws`
- [Azure adapter](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-azure/src/main/java/com/example/messaging/azure): `messaging-azure/src/main/java/com/example/messaging/azure`
- [GCP adapter](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-gcp/src/main/java/com/example/messaging/gcp): `messaging-gcp/src/main/java/com/example/messaging/gcp`
- [JMS adapter](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-jms/src/main/java/com/example/messaging/jms): `messaging-jms/src/main/java/com/example/messaging/jms`
- [RabbitMQ adapter](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-rabbitmq/src/main/java/com/example/messaging/rabbitmq): `messaging-rabbitmq/src/main/java/com/example/messaging/rabbitmq`

### Inbox processing

- [Polling consumer](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/InboxConsumer.java): `messaging-inbox/src/main/java/com/example/messaging/inbox/InboxConsumer.java`
- [Envelope decoding](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/EnvelopeReader.java): `messaging-inbox/src/main/java/com/example/messaging/inbox/EnvelopeReader.java`
- [Message handler](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/InboxHandler.java): `messaging-inbox/src/main/java/com/example/messaging/inbox/InboxHandler.java`
- [Retry policy](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-inbox/src/main/java/com/example/messaging/inbox/retry): `messaging-inbox/src/main/java/com/example/messaging/inbox/retry`
- [Delivery outcomes](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/OutcomeApplier.java): `messaging-inbox/src/main/java/com/example/messaging/inbox/OutcomeApplier.java`
- [Idempotency](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-inbox/src/main/java/com/example/messaging/inbox/IdempotencyGuard.java): `messaging-inbox/src/main/java/com/example/messaging/inbox/IdempotencyGuard.java`
- [Dead-letter redrive](https://github.com/sartrebrasil/messaging-library/tree/main/messaging-inbox/src/main/java/com/example/messaging/inbox/redrive): `messaging-inbox/src/main/java/com/example/messaging/inbox/redrive`

### Spring integration

- [Boot configuration](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingAutoConfiguration.java): `messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingAutoConfiguration.java`
- [Inbox lifecycle](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/inbox/spring/InboxLifecycle.java): `messaging-spring-boot-starter/src/main/java/com/example/messaging/inbox/spring/InboxLifecycle.java`
- [Metrics and health](https://github.com/sartrebrasil/messaging-library/blob/main/messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingHealthAutoConfiguration.java): `messaging-spring-boot-starter/src/main/java/com/example/messaging/spring/MessagingHealthAutoConfiguration.java`

### Other components

- **Application**
- **Cloud brokers**
- **ActiveMQ brokers**
- **RabbitMQ broker**

## Connections

- Application → Core API: uses API (evidence: `README.md`)
- Core API → AWS adapter: implemented by (evidence: `README.md`)
- Core API → Azure adapter: implemented by (evidence: `README.md`)
- Core API → GCP adapter: implemented by (evidence: `README.md`)
- Core API → JMS adapter: implemented by (evidence: `README.md`)
- Core API → RabbitMQ adapter: implemented by (evidence: `README.md`)
- AWS adapter → Cloud brokers: uses SDKs (evidence: `README.md`)
- Azure adapter → Cloud brokers: uses SDKs (evidence: `README.md`)
- GCP adapter → Cloud brokers: uses SDKs (evidence: `README.md`)
- JMS adapter → ActiveMQ brokers: connects via JMS (evidence: `README.md`)
- RabbitMQ adapter → RabbitMQ broker: uses AMQP (evidence: `README.md`)
- Polling consumer → Core API: polls receiver (evidence: `README.md`)
- Polling consumer → Envelope decoding: decodes envelope (evidence: `README.md`)
- Polling consumer → Message handler: invokes handler (evidence: `README.md`)
- Polling consumer → Idempotency: guards processing
- Polling consumer → Retry policy: classifies failures
- Polling consumer → Delivery outcomes: applies result
- Delivery outcomes → Core API: acks or nacks (evidence: `README.md`)
- Dead-letter redrive → Core API: uses receiver API
- Boot configuration → Core API: configures providers (evidence: `README.md`)
- Inbox lifecycle → Polling consumer: starts consumers (evidence: `README.md`)
- Metrics and health → Boot configuration: adds health metrics (evidence: `README.md`)
- Boot configuration → Inbox lifecycle: enables optionally (evidence: `README.md`)
