Weave 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

Async Event Dispatcher Bundle Laravel Package

tripcloud/async-event-dispatcher-bundle

Symfony bundle for asynchronous event dispatching, letting applications publish events without blocking the request. Integrates with Symfony's dispatcher to queue and process listeners in the background, improving response times and decoupling event handling in PHP applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a Symfony2 bundle, not a Laravel package. That distinction is load-bearing: Symfony bundles rely on the FrameworkBundle's kernel, DI container compiler passes, Resources/config service definitions, and the Symfony\Component\EventDispatcher\EventDispatcherInterface contract. Laravel's event system implements Illuminate\Contracts\Events\Dispatcher and has no bundle registration mechanism — integration would mean either pulling symfony/event-dispatcher into a Laravel app and maintaining two parallel dispatcher abstractions, or rewriting the package as a service provider. Neither is "integration"; both are a port.

Integration feasibility. Low. The package targets Symfony 2.x, which pins it to the PHP 5.x/7.0 era and to pre-php-amqplib v3 RabbitMQ client conventions. A modern Laravel application (10/11/12) runs PHP 8.1+ with typed properties, enums, and a Composer dependency graph that will not resolve against symfony/*:^2.x. Expect a hard dependency conflict before you reach the first line of glue code. The realistic path is vendoring the source and rewriting it, at which point you are not adopting a package — you are adopting a reference implementation.

Technical risk. Very high, and concentrated in provenance rather than code quality:

Risk Signal Consequence
Abandonment Symfony 2 EOL since Nov 2018; PHP 5.x/7.0 EOL No security patches, no PHP 8 compatibility
No validation 0 stars, 0 dependents, score 0 No production usage to learn from; no issue history
Hosting Bitbucket, likely private/team-internal origin Uncertain licensing, no fork ecosystem, no Packagist mirror guarantees
Coupling Symfony dispatcher contract + RabbitMQ transport in one artifact Cannot swap either half independently

The zero-dependent signal matters most to a TPM. A package with a hundred dependents has a de facto support network and a known failure surface. This one has neither, so every unknown becomes your team's to discover in production.

Key questions.

  1. Is the Bitbucket repository publicly readable, and under what license? If not, this is a legal blocker before it is a technical one.
  2. What is the actual business need — asynchronous domain events, or specifically RabbitMQ as the broker?
  3. Does the target application already run RabbitMQ, or would this introduce a new piece of infrastructure?
  4. Is there an existing internal fork or maintainer we could onboard, or is the original team gone?
  5. What event volume and delivery guarantee (at-most-once vs at-least-once) does the use case require?

Integration Approach

Stack fit. Poor as-is, workable as a pattern. Laravel already ships the exact primitives this bundle was built to provide: Event::listen for synchronous handlers, queued listeners and dispatchAfterResponse for async, and Horizon for worker supervision and observability. The bundle's only genuinely differentiating idea — routing dispatches through RabbitMQ rather than the framework's native queue — is reproducible with vladimir-yuldashev/laravel-queue-rabbitmq plus native events, with no Symfony baggage and no fork to own.

Migration path. Three options, ordered by recommendation:

  1. Reimplement the pattern natively (recommended). Laravel events + RabbitMQ queue driver + queued listeners. Scope is roughly 1–3 engineer-days for a working vertical slice including a dead-letter queue and idempotency keys. You inherit the team's existing Laravel expertise and Laravel's supported upgrade path.
  2. Port the bundle to a Laravel service provider. Fork, replace the Symfony dispatcher contract with Illuminate\Contracts\Events\Dispatcher, replace the DI config with a service provider, upgrade the AMQP client. Estimate 5–10 engineer-days plus a permanent fork-maintenance tax. Only justified if the original code encodes non-obvious routing logic you cannot reconstruct from the description.
  3. Adopt directly. Not viable. Dependency resolution fails against modern PHP; the dispatcher contract mismatch is structural.

Compatibility. Assume Symfony 2.8 / PHP 5.6–7.0 as the design center. Verify against your actual runtime before any further investment — if composer require does not resolve, options 3 is closed and option 1 or 2 is the decision.

Sequencing.

  1. Day 1 — license and access check. Confirm the repo is readable and licensed for commercial use. This can kill the initiative outright; do it first.
  2. Day 1–2 — read the source. Extract the routing semantics (exchange/queue naming, routing keys, serialization format, retry behavior). Document them as a spec, not as code to reuse.
  3. Day 2–3 — spike the native equivalent against a local RabbitMQ, and prove publish → consume → ack → DLQ.
  4. Week 2 — ADR. Record the build-vs-fork decision with the effort estimates above before committing engineering time.
  5. Only then decide whether to fork. Do not let a two-day spike become an unowned fork by default.

Operational Impact

Maintenance. Under option 2, you own a fork permanently: PHP 8 compatibility, AMQP client upgrades, Symfony-contract decoupling, security patches in transitive dependencies. That is an ongoing, non-amortizing cost with no upstream to rebase against. Under option 1, maintenance collapses into routine Laravel and RabbitMQ upgrades the team already performs.

Support. None. No maintainer, no issue tracker activity, no community. Every incident is a first-principles debugging exercise against unfamiliar code, likely by whoever is on call rather than whoever integrated it. Budget for that asymmetry.

Scaling. RabbitMQ scales well; this package's contribution to scaling is the risk. Expect static, config-file-defined topology — exchanges, queues, and bindings declared at container boot. That means topology changes require a deploy, no per-environment dynamic routing, and consumer prefetch/concurrency likely hardcoded rather than tunable at runtime. Horizontal consumer scaling is achievable but will require editing the package's worker configuration rather than adjusting environment variables.

Failure modes. The ones to design against, in rough order of severity:

  • Silent event loss. If publishes lack publisher confirms and mandatory flags, messages vanish when a broker node or queue is unavailable. Async dispatch makes this invisible to the request path — the user sees success, the event never happened.
  • Poison messages and no DLQ. A handler that throws on a malformed payload will redeliver indefinitely, consuming consumer capacity. Confirm dead-letter exchange configuration exists before trusting the package with anything important.
  • Non-idempotent consumers. At-least-once delivery is the realistic guarantee; without idempotency keys you get duplicate side effects (double emails, double charges).
  • Serialization fragility. PHP-object serialization of event payloads breaks across PHP versions and class refactors, and couples producer and consumer deployments. Prefer plain array/JSON payloads with explicit schema versioning.
  • Long-running worker degradation. PHP 5-era workers frequently leak memory and hold stale DB connections; supervisors must recycle them on a message or time limit.
  • Connection churn. Naive per-dispatch connection setup will exhaust broker connections under load; verify connection reuse or pooling.

Ramp-up. For the team, effectively zero transferable knowledge — no docs, no examples, no prior adopters to consult. For a new engineer inheriting a fork, expect 2–3 days to become productive in the code and considerably longer to become confident in its failure behavior. Contrast with the native Laravel approach, where ramp-up is bounded by the team's existing framework familiarity.

TPM recommendation. Decline adoption. Treat the repository as a design reference only: read it, extract the exchange/queue topology and routing semantics, and implement the equivalent on Laravel's native event and queue system. The package's core idea — async domain events over RabbitMQ — is sound and worth building; the artifact itself is a 2015-era Symfony bundle with no maintainer, no license clarity, and no modern PHP compatibility, and owning a fork of it is a worse trade than a two-day reimplementation.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib