Watch
1
0
Fork
You've already forked jeap-messaging-outbox
0
mirror of https://github.com/jeap-admin-ch/jeap-messaging-outbox.git synced 2026-08-17 12:55:22 +00:00
Read-only mirror of https://github.com/jeap-admin-ch/jeap-messaging-outbox — Bundesamt für Informatik und Telekommunikation. Issues & pull requests at the source. Catalog: https://www.opensource.admin.ch/en/softwares/hti4km https://www.opensource.admin.ch/en/softwares/hti4km
  • Java 99.9%
  • Shell 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-13 09:25:36 +02:00
.mvn/wrapper JEAP-5584: copied from jeap-messaging 2025-06-13 12:22:04 +02:00
.run JEAP-5584: copied from jeap-messaging 2025-06-13 12:22:04 +02:00
docs JEAP-7087: update documentation 2026-07-03 09:40:29 +02:00
jeap-messaging-outbox Version 17.12.0: Update parent from 8.9.1 to 8.10.0 2026-08-13 07:56:50 +02:00
jeap-messaging-outbox-test JEAP-7107: move plugin management to internal parent 2026-08-13 09:05:30 +02:00
.gitignore JEAP-5584: initial commit 2025-06-12 17:14:33 +02:00
AGENTS.md JEAP-7087: update documentation 2026-07-03 09:40:29 +02:00
CHANGELOG.md Version 17.12.0: update jeap-messaging from 17.11.0 to 17.12.0 2026-08-13 09:25:36 +02:00
CONTRIBUTING.md JEAP-7087: update documentation 2026-07-03 09:40:29 +02:00
LICENSE JEAP-5584: copied from jeap-messaging 2025-06-13 12:22:04 +02:00
mvnw JEAP-5584: copied from jeap-messaging 2025-06-13 12:22:04 +02:00
pom.xml Version 17.12.0: update jeap-messaging from 17.11.0 to 17.12.0 2026-08-13 09:25:36 +02:00
publiccode.yml Update version/date in publiccode.yml 2026-08-13 07:59:49 +02:00
README.md [skip ci] JEAP-7087 Add docs 2026-06-18 16:34:33 +02:00
SECURITY.md JEAP-5584: copied from jeap-messaging 2025-06-13 12:22:04 +02:00
setPomVersions.sh JEAP-5584: copied from jeap-messaging 2025-06-13 12:22:04 +02:00
THIRD-PARTY-LICENSES.md Updating THIRD-PARTY-LICENSES.md 2026-08-13 07:58:19 +02:00

jEAP Messaging outbox

jEAP Messaging outbox is an implementation of the Transactional outbox pattern for jEAP Spring Boot services. It lets a service change persistent data and publish Kafka messages within a single database transaction: messages are stored in an outbox table together with the business data in the same transaction, and are only relayed to Kafka after the transaction commits. If the transaction rolls back, the messages are never sent. This gives reliable, at-least-once message delivery without distributed transactions (XA / 2PC), even when Kafka is temporarily unavailable.

It complements jeap-messaging: messages are still strongly-typed Avro events and commands, contracts are still enforced, and signing, encryption and tracing carry over.

  • Atomic "save data + queue message" in one local DB transaction
  • Two delivery modes: send immediately after commit, or hand off to a scheduled background relay
  • Background message relay with ShedLock-based locking for safe multi-instance operation
  • Failed-message handling (query, mark for resend) for messages that fail for message-specific reasons
  • Configurable housekeeping with separate retention for sent and unsent messages
  • Multi-cluster support and Micrometer metrics for operational monitoring

Documentation

Start with Getting started, then follow the links below.

Topic File
Getting started (add the dependency, send a message) docs/getting-started.md
Architecture & the relay flow docs/architecture.md
Sending messages (TransactionalOutbox API, delivery modes) docs/sending-messages.md
Database schema & migrations docs/database.md
Failure handling & failed-message operations docs/failure-handling.md
Housekeeping & retention docs/housekeeping.md
Metrics docs/metrics.md
Multi-cluster support docs/multi-cluster.md
Configuration reference (jeap.messaging.transactional-outbox.*) docs/configuration.md

Modules

Group id for all modules is ch.admin.bit.jeap; the version is managed by the jEAP Spring Boot parent.

Module Purpose
jeap-messaging-outbox The outbox implementation; the artifact consumers depend on
jeap-messaging-outbox-test Internal integration-test module (embedded Kafka, H2, Flyway); not a consumer API

Changes

This library is versioned using Semantic Versioning and all changes are documented in CHANGELOG.md following the format defined in Keep a Changelog.

Note

This repository is part the open source distribution of jEAP. See github.com/jeap-admin-ch/jeap for more information.

License

This repository is Open Source Software licensed under the Apache License 2.0.