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
Phpamqplib Messenger

Phpamqplib Messenger Laravel Package

checkthiscloud/phpamqplib-messenger

View on GitHub
Deep Wiki
Context7

This bundle adds support for php-amqplib/php-amqplib to Symfony Messenger, providing an alternative way to connect to RabbitMQ using a pure PHP library instead of the php-amqp C extension.

Frequently asked questions about Phpamqplib Messenger
How do I replace Laravel’s native AmqpTransport with this package?
First, install the package via Composer: `composer require checkthiscloud/phpamqplib-messenger`. Then, configure your `config/messenger.php` to use the `phpamqplib` transport with a DSN like `phpamqplib://user:pass@host:5672/vhost`. Ensure your Laravel app uses the Symfony Messenger component (Laravel 8+). Replace any `AmqpTransport` bindings in your DI container with the new transport.
Will this work with Laravel 9 or 10?
Yes, this package is compatible with Laravel 8+ and supports PHP 8.0+. The Symfony Messenger integration ensures compatibility with newer Laravel versions, provided you’re using the Messenger component. Test thoroughly with your Laravel version, as Symfony DI may require minor adjustments in custom service providers.
Does this package support publish confirms and retry logic?
Yes, the package enables publish confirms and includes retry logic by default, addressing common AMQP failure modes. This is a key advantage over Laravel’s native `AmqpTransport`, which lacks these features. Configure your transport in `messenger.yaml` to leverage these reliability features out of the box.
What PHP extensions are required?
This package requires `ext-sockets` (added in v0.11.0) for TCP connections but eliminates the need for the `php-amqp` C extension. Unlike `php-amqp`, it’s pure PHP, making it more portable across environments. Ensure your server has `ext-sockets` enabled, which is typically included in most PHP installations.
How do I handle dependency conflicts with Symfony’s DI?
Run `composer why symfony/dependency-injection` to check for conflicts. If conflicts exist, explicitly pin versions in `composer.json` or use `platform-check` to enforce compatibility. The package introduces Symfony DI (v6.4+), so ensure your Laravel app or other packages won’t clash. Custom `AppServiceProvider` bindings may need adjustments to coexist with Symfony’s container.
Can I migrate from php-amqp to this package without downtime?
Yes, but plan a phased migration. First, set up the new transport in parallel with your existing `AmqpTransport`. Use Laravel’s `Queue` facade to route messages to both transports temporarily. Monitor for errors, then switch fully once confirmed stable. The DSN format (`phpamqplib://...`) is similar to `amqp://`, simplifying the transition.
Does this package support async consumers like Symfony’s amqp-messenger?
Yes, this package properly implements asynchronous consumers, unlike Laravel’s native `AmqpTransport`, which relies on polling. Async consumers improve throughput for high-volume queues and reduce resource contention. Configure your consumer workers to use the `phpamqplib` transport for optimal performance.
How do I configure multiple RabbitMQ queues or exchanges?
Define multiple transports in `config/messenger.php` under the `framework.messenger.transports` key. Each transport can have its own DSN, exchange, and queue configurations. For example, specify `orders` and `notifications` transports with unique DSNs and bindings. The package automatically creates exchanges and binds queues as defined in your configuration.
Are there performance differences compared to php-amqp?
Performance is comparable, but `php-amqplib` offers better async handling and reliability features. Benchmark your specific workload, as pure PHP may introduce slight overhead in some scenarios. However, the async consumers in this package often improve throughput for high-message volumes. Test with your production-like load to validate.
What alternatives exist for Laravel Messenger with RabbitMQ?
Alternatives include Laravel’s native `AmqpTransport` (requires `php-amqp` extension), `symfony/amqp-messenger` (Symfony’s official transport), or `enqueue/amqp-ext` (another pure-PHP option). This package stands out for its seamless Laravel integration, async consumers, and Symfony Messenger compatibility. Choose based on your need for C extensions, async support, or Symfony ecosystem alignment.
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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky