Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Outbox Bundle Laravel Package

agluh/outbox-bundle

Laravel outbox pattern bundle for reliable event publishing: capture domain events in an outbox table within your transaction, then dispatch them asynchronously to queues or brokers. Helps avoid dual-write issues and improves consistency between your DB and integrations.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Event-Driven Architecture (EDA) Adoption: Enables reliable asynchronous event publishing for DDD-based Symfony applications, reducing coupling between services and improving scalability.
  • Decoupling Microservices: Facilitates the Outbox pattern to ensure events are processed even if downstream services are temporarily unavailable, critical for distributed systems.
  • Build vs. Buy: Avoids reinventing the wheel for a complex pattern (Outbox) while maintaining flexibility for customization.
  • Roadmap for Resilience: Supports gradual migration to event-driven workflows, aligning with long-term architectural goals like eventual consistency or CQRS.
  • Use Cases:
    • Order processing systems where events (e.g., OrderCreated) must be reliably published to downstream services (e.g., inventory, notifications).
    • Audit logging or compliance requirements where event persistence is mandatory before processing.
    • Systems requiring exactly-once event delivery guarantees.

When to Consider This Package

  • Adopt if:

    • Your Symfony application follows Domain-Driven Design (DDD) principles and relies on event-driven communication.
    • You need reliable event publishing with persistence guarantees (e.g., events must not be lost if a downstream service fails).
    • Your team is already using Doctrine ORM and Symfony’s ecosystem (Lock, Console, FrameworkBundle).
    • You prioritize simplicity over custom solutions (e.g., writing raw SQL or custom message queues for Outbox).
    • Your PHP version is 7.4+ and Symfony is 4.4+ or 5.0+.
  • Look elsewhere if:

    • You’re not using Symfony or Doctrine ORM (this bundle is tightly coupled to these frameworks).
    • Your eventing needs are simple (e.g., fire-and-forget without persistence guarantees).
    • You require advanced event routing (e.g., dynamic subscribers) beyond what the Outbox pattern provides.
    • Your team lacks familiarity with DDD or asynchronous workflows, as this adds complexity.
    • The last release (2020) is a concern for long-term maintenance (evaluate fork or alternative like symfony/messenger with Outbox extensions).
    • You need multi-tenancy or high-throughput event processing (this bundle may not scale as efficiently as dedicated queue systems like RabbitMQ/Kafka).

How to Pitch It (Stakeholders)

For Executives: "This package lets us implement the Outbox pattern—a battle-tested way to ensure events (like order confirmations or payment updates) are reliably published to other services, even if those services are down. It reduces risk in our event-driven architecture, improves system resilience, and aligns with our DDD approach. Think of it as a 'save draft' for events: they’re stored in our database first, then processed asynchronously. This is a lightweight, Symfony-native solution that avoids custom engineering effort while meeting critical reliability needs for [specific use case, e.g., e-commerce or financial transactions]."

For Engineering: *"The agluh/outbox-bundle gives us a turnkey Outbox implementation for Symfony/DDD apps. Key benefits:

  • Reliability: Events are persisted to the DB before being processed, preventing data loss.
  • Decoupling: Services can evolve independently since they communicate via events.
  • Integration: Works seamlessly with Doctrine ORM, Symfony Lock, and UUIDs (if needed).
  • Simplicity: No need to build a custom Outbox table or polling logic—just configure and use.

Trade-offs: It’s Symfony-specific and hasn’t been updated since 2020, so we’d need to monitor for forks or alternatives. For now, it’s a solid choice if we’re committed to DDD and want to avoid reinventing the Outbox wheel.*

For Architects: *"This bundle implements the Outbox pattern as a database-backed event store, which is ideal for:

  • Exactly-once event delivery: Events are marked as 'published' only after successful processing.
  • Idempotency: UUIDs prevent duplicate events if polling fails.
  • Observability: Events are stored in a table, enabling debugging and replayability.

Consider pairing it with Symfony Messenger for routing events to queues (e.g., RabbitMQ) if you need higher throughput. For greenfield projects, evaluate if symfony/messenger + custom Outbox table might offer more flexibility."

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui