micro-module/outbox-bundle
A Laravel bundle implementing the transactional outbox pattern: persist domain events to a database table inside the same transaction as your writes, then relay them reliably to queues or brokers. Avoids lost or duplicated messages when publishing fails, keeping event delivery consistent with commit...
OrderPlaced" or "we published but the transaction rolled back" is a customer-visible failure — checkout, payments, inventory, provisioning, notification fan-out.Consider it if:
Look elsewhere if:
MicroModule\OutboxBundle, DI extension, Doctrine mapping, console relay command) — not a Laravel package. There is no service provider, facade, or publishable config. Treat Laravel compatibility as unproven; there are Laravel-native and framework-agnostic alternatives with real adoption.Bottom line: it is a pattern-teaching artifact, not a production dependency for a Laravel shop — adopt only with an explicit fork-and-own plan, and only after confirming the Symfony internals port cleanly to your stack.
To executives: We are evaluating a small open-source component for the transactional outbox pattern — the mechanism that guarantees "if the database committed, the event was eventually published." It directly reduces a class of data-inconsistency incidents (lost notifications, orders without downstream fulfillment, silent billing gaps) that are expensive to debug and erode customer trust. Cost of a trial is a few engineering days. Honest framing: the package has no adoption and no maintainer commitment, and it is built for Symfony rather than our Laravel stack — so this is research to inform build-vs-buy, not a commitment to depend on it. Recommendation: time-boxed spike, decision memo, no production exposure until the spike passes.
To engineering: The pattern is correct and widely used; this specific implementation is unproven (0 stars, 0 dependents, no issue history) and Symfony-shaped, so we will be porting concepts — table schema, relay loop, retention policy — rather than installing a dependency. Treat it as a reference design and possible fork base. The spike should answer four questions: (1) does the relay handle failure, retry, and poison messages; (2) are at-least-once semantics and consumer idempotency actually enforced; (3) how does the outbox table grow, index, and purge; (4) what ordering guarantees exist per aggregate. If the design holds up, we own the code through a thin internal interface; if not, we implement the pattern ourselves against our existing broker. Either way we end with a documented, testable outbox contract that outlives this package.
How can I help you explore Laravel packages today?