A Go library implementing the outbox pattern to ensure reliable message delivery in distributed systems.
Outboxer is a Go library that implements the outbox pattern, providing a solution for reliable message delivery in distributed systems, particularly within event-driven architectures. It addresses the challenge of ensuring messages are sent even when brokers or consumers are unavailable, simplifying message reliability orchestration.
Go developers building distributed systems, especially those working with event-driven architectures who need to guarantee message delivery despite broker or consumer failures.
Developers choose Outboxer for its abstraction of message reliability complexities, offering a simple, extensible interface with support for multiple data stores and event streams to ensure at-least-once delivery.
A library that implements the outboxer pattern in go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports PostgreSQL, MySQL, and SQL Server for persistent outbox storage, as listed in the Data Stores section, providing flexibility for different SQL backends.
Integrates with AMQP, AWS Kinesis, AWS SQS, and Google Cloud Pub/Sub, offering a unified interface for various messaging systems, as detailed under Event Streams.
Includes configurable check intervals and cleanup routines, shown in the usage example with WithCheckInterval and WithCleanupInterval, reducing manual oversight.
Provides ErrChan() and OkChan() for real-time error handling and delivery confirmation, demonstrated in the code snippet with select statements for status updates.
Only supports listed databases and event streams; extending to unsupported systems like Redis or Apache Kafka requires implementing custom interfaces, which adds development overhead.
The usage example shows multiple steps including database connection, event stream setup, and outboxer initialization, which can be error-prone and cumbersome for quick integration.
The outbox pattern inherently involves database writes and periodic checks, introducing latency compared to direct messaging, which may not suit high-throughput scenarios.