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

Mq Notification Bundle Laravel Package

fintem/mq-notification-bundle

fintem/mq-notification-bundle is a PHP package for message-queue-based notification delivery, offering bundle-style configuration to dispatch and route notifications asynchronously through MQ infrastructure in Laravel/PHP applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor for a Laravel codebase. Despite the framing, fintem/mq-notification-bundle is a Symfony bundle, not a Laravel package. It integrates via Symfony's Bundle registration, a DependencyInjection extension, and symfony/event-dispatcher + symfony/framework-bundle. Laravel has no bundle kernel, and its event dispatcher has a different contract (handle($event) listeners, no event-name argument). Installing it into a Laravel app would drag in symfony/framework-bundle and collide with Laravel's own Symfony component pins. There is no supported integration path; the only viable use is as a reference implementation of an AMQP notification contract.

Integration feasibility — feasible only as a pattern, not as a dependency. The package's real IP is small: a notification message envelope, an AMQP producer that publishes it, and a consumer that pops from the queue and re-dispatches a Symfony event. That is roughly 200–500 lines of transferable logic. A TPM should scope the work as "extract the message schema and topology, reimplement the producer/consumer on Laravel primitives (Illuminate\Contracts\Queue, Events, a supervised worker)" rather than "integrate the package."

Technical risk — high.

  • Abandoned since July 2018 — no releases in ~7 years, 2 stars, 0 dependents, no evidence of CI or test coverage. No community to absorb a CVE or a RabbitMQ protocol change.
  • Version skew — written for the PHP 7.0–7.2 / Symfony 2.x–4.x era; unlikely to satisfy modern PHP 8.2+ and Laravel 10/11 dependency graphs.
  • Deserialization surface — a consumer that dispatches events from broker-supplied payloads is an injection and untrusted-input boundary; the envelope's serialization format must be verified (avoid unserialize of broker data).
  • Unknown operational semantics — ack/nack behavior, requeue-on-listener-exception loops, DLQ handling, and idempotency are unverified.

Key questions for the maintainer/spike.

  1. What is the wire format of the notification message (JSON schema, serialize, custom)?
  2. Are exchanges, queues, and bindings declared in code, config, or assumed to pre-exist?
  3. What happens when a listener throws — nack/requeue, ack-and-drop, or dead-letter?
  4. Is the consumer idempotent, and is there any dedupe key on the envelope?
  5. Which PHP/Symfony constraint set does composer.json declare, and does the notification envelope have value decoupled from the bundle wiring?
  6. Who owned this internally at Fintem, and is a fork acceptable under MIT?

Integration Approach

Stack fit. Treat it as a protocol specification, not a library. The target stack is Laravel + RabbitMQ via php-amqplib or a maintained Laravel AMQP bridge, with Illuminate\Events as the dispatch layer — a straight semantic port of the Symfony design (produce → publish → consume → dispatch → listeners), not a wrapper.

Migration path.

  1. Spike (1–2 days): read the source, extract the message envelope, AMQP topology, ack strategy, and retry behavior into a written contract doc.
  2. Port the contract, not the code: define a versioned notification envelope (JSON, explicit type, id, schema_version, occurred_at, payload).
  3. Producer: Laravel event → queued job → AMQP publish with publisher confirms.
  4. Consumer: dedicated supervised worker (not the default queue:work) with manual ack, bounded retries, dead-letter routing, and idempotency keyed on envelope id.
  5. Contract tests built from recorded fixtures, so future producers/consumers stay wire-compatible.

Compatibility. Do not add the package to composer.json. If any team insists on running it, it must live in an isolated Symfony service with its own container — a polyglot sidecar — which raises operational cost for a 2-star, seven-year-stale dependency.

Sequencing. Contract extraction → envelope definition → producer in Laravel → consumer with failure semantics → observability (queue depth, DLQ count, consumer lag) → canary on one notification type before broadening. Ship nothing that depends on the original bundle in production.

Operational Impact

Maintenance. Effectively zero upstream. Any adoption implies forking and owning the code, or porting it entirely. Budget an internal owner; the MIT license makes the fork clean, but there is no upgrade path, no security patching, and no issue triage.

Support. No vendor, no community, 0 dependents means no field-tested failure modes to learn from. Support burden falls 100% on the adopting team, and the absence of tests means regressions surface in production.

Scaling. AMQP itself scales fine — this is the one genuinely attractive property (opportunity score 4.16 likely reflects the messaging pattern, not the package). Real constraints are consumer-side: prefetch tuning, horizontal consumer scaling against a single queue, supervision (systemd/supervisord), and monitoring queue depth and DLQ growth. The Symfony bundle's long-running consumer pattern does not translate to Laravel's default worker without explicit configuration.

Failure modes to plan for.

  • Poison messages — unparseable payload retried indefinitely if the consumer requeues on exception; requires bounded retries plus DLQ.
  • Requeue storms — a throwing listener against a nack-with-requeue policy saturates the queue and CPU.
  • Message loss — auto-ack before processing completes.
  • Topology drift — undeclared exchanges/queues break silently on a fresh broker.
  • Broker outage — publish path needs a bounded local buffer or fast-fail; otherwise user-facing requests hang.
  • Silent version skew — producer and consumer envelope changes with no schema versioning.

Ramp-up. Low in absolute terms — the code surface is small and the architecture is conventional, so a mid-level engineer can absorb it in a day. The cost is not learning the package; it is the unknowns (ack policy, serialization, topology assumptions) that must be discovered by reading stale source rather than documentation. Recommend the spike before any commitment, and a default position of "port the pattern, discard the dependency."

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.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums