event-driven-messaging

Solid

Use when implementing Kafka, RabbitMQ, Pulsar, or JMS producers and consumers in Spring Boot 3. Covers event contracts, idempotency, retries, dead-letter handling, ordering, and outbox delivery.

AI & Automation 225 stars 37 forks Updated 6 days ago MIT

Install

View on GitHub

Quality Score: 85/100

Stars 20%
78
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
99
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Event-Driven Messaging Design for at-least-once delivery unless the complete system proves stronger semantics. ## Event contract - Use an immutable event envelope with `eventId`, `eventType`, `occurredAt`, `schemaVersion`, and payload. - Treat published schemas as APIs. Add fields compatibly and never silently change meaning. - Put correlation and causation IDs in headers or the envelope. - Do not publish JPA entities or framework-specific serialization shapes. ## Producer rules - Publish only after the originating state change is durable. - Use a transactional outbox when database state and broker publication must agree. - Use deterministic partition keys when per-aggregate ordering matters. - Configure delivery timeout and acknowledgements explicitly. ## Consumer rules - Make handlers idempotent with a durable processed-event record or naturally idempotent write. - Keep the transaction boundary around the state change and idempotency marker. - Classify transient and permanent failures before configuring retries. - Bound retries with backoff, then route poison messages to a dead-letter destination. - Preserve the original event, failure reason, and attempt count for replay. ## Testing - Test serialization compatibility and handler idempotency. - Use Testcontainers for broker integration tests. - Test duplicate, reordered, delayed, and poison messages. ## Examples - See `examples/good-consumer.java` and `examples/bad-consumer.java`. ## Gotchas - Agent assumes e...

Details

Author
rrezartprebreza
Repository
rrezartprebreza/spring-boot-skills
Created
4 months ago
Last Updated
6 days ago
Language
Java
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category