PHPackages                             jwage/phpamqplib-messenger - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. jwage/phpamqplib-messenger

ActiveSymfony-bundle[Queues &amp; Workers](/categories/queues)

jwage/phpamqplib-messenger
==========================

Symfony messenger transport for the php-amqplib/php-amqplib library.

0.10.0(1mo ago)84149.7k↑11.2%11[6 issues](https://github.com/jwage/phpamqplib-messenger/issues)[1 PRs](https://github.com/jwage/phpamqplib-messenger/pulls)1MITPHPPHP ^8.3CI passing

Since Apr 13Pushed 1mo ago8 watchersCompare

[ Source](https://github.com/jwage/phpamqplib-messenger)[ Packagist](https://packagist.org/packages/jwage/phpamqplib-messenger)[ RSS](/packages/jwage-phpamqplib-messenger/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (20)Versions (31)Used By (1)

PhpAmqpLibMessengerBundle
=========================

[](#phpamqplibmessengerbundle)

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](https://github.com/php-amqp/php-amqp) C extension.

Installation
------------

[](#installation)

```
composer require jwage/phpamqplib-messenger
```

Make sure the bundled is enabled in `config/bundles.php`:

```
return [
    // ...
    Jwage\PhpAmqpLibMessengerBundle\PhpAmqpLibMessengerBundle::class => ['all' => true],
];
```

The minimum configuration required is the transports name and the DSN.

```
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            orders:
                dsn: 'phpamqplib://guest:guest@localhost:5672/myvhost/orders'
```

The configuration above will create an exchange named `orders` and bind a queue named `orders` to it within the vhost `myvhost`.

Roadmap
-------

[](#roadmap)

The objective and future roadmap for this bundle is to achieve version 1.0 as a third-party Symfony bundle first, and then subsequently integrate it into the Symfony core for Symfony 7.4 LTS, as `symfony/phpamqplib-messenger`, providing an alternative to `symfony/amqp-messenger`.

Documentation
-------------

[](#documentation)

For detailed documentation, including advanced configuration options, features, and usage examples, please see the [documentation](docs/index.md).

Why use this bundle?
--------------------

[](#why-use-this-bundle)

There are several reasons why you might prefer to use the `php-amqplib/php-amqplib` library over the `php-amqp` C extension for connecting to RabbitMQ in Symfony Messenger:

1. **Asynchronous Consumers**: The `php-amqplib` library properly implements asynchronous consumers, which allows for more efficient message handling. This is particularly useful for advanced use cases where you need to handle a large number of messages concurrently.
2. **Active Maintenance**: Both `php-amqplib` and `php-amqp` are actively maintained by VMware. However, `php-amqplib` is often preferred for its flexibility and ease of use in PHP applications.
3. **PHP Version Compatibility**: Using `php-amqplib` makes upgrading PHP versions easier, as it does not rely on a C extension that may have compatibility issues with newer PHP versions.
4. **Efficient Message Streaming**: The `php-amqplib` library allows for proper streaming of messages from the server, avoiding the inefficiencies of constant polling with `get()`. This means that you can maintain an open stream connection and control how long to wait for messages, which is not possible with the `php-amqp` extension.
5. **Safe Worker Shutdown**: With `php-amqplib`, you can safely stop your workers using `pcntl` signals, ensuring that your handlers do not get shut down mid-message handling. This is a significant advantage over the `php-amqp` extension, where the `consume()` method does not work as expected, leading to potential issues with worker shutdown.

In summary, `php-amqplib` provides a more robust and flexible solution for connecting to RabbitMQ in Symfony Messenger, making it the preferred choice for many developers.

Message Reliability
-------------------

[](#message-reliability)

This bundle prioritizes message reliability over raw performance. By default, confirms are enabled to ensure that messages are acknowledged by the server. In the event of a connection exception, publishes are retried if there is uncertainty about whether a message was received by the server. This approach ensures that messages are not lost, but it also means that a message could potentially be published twice. Therefore, it is crucial to ensure that your message handlers are 100% idempotent to handle such scenarios gracefully.

Acknowledgements
----------------

[](#acknowledgements)

We would like to express our sincere gratitude to [@videlalvaro](https://github.com/videlalvaro), the author of the [php-amqplib](https://github.com/php-amqplib/php-amqplib) library, for his invaluable contributions to the development of this project. We also acknowledge Microsoft for supporting his efforts, as he utilized company time to help make this Symfony bundle a robust and reliable solution for connecting to RabbitMQ in Symfony applications.

License
-------

[](#license)

This bundle is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance87

Actively maintained with recent releases

Popularity49

Moderate usage in the ecosystem

Community20

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~13 days

Recently: every ~82 days

Total

28

Last Release

54d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3c4b569aa557436333fb02f55dfc0dacd6cb54c29820de24d9ad8a61cabb7716?d=identicon)[jwage](/maintainers/jwage)

---

Top Contributors

[![jwage](https://avatars.githubusercontent.com/u/97422?v=4)](https://github.com/jwage "jwage (123 commits)")[![dantleech](https://avatars.githubusercontent.com/u/530801?v=4)](https://github.com/dantleech "dantleech (7 commits)")[![kraz](https://avatars.githubusercontent.com/u/1006092?v=4)](https://github.com/kraz "kraz (2 commits)")[![TamasSzigeti](https://avatars.githubusercontent.com/u/148897?v=4)](https://github.com/TamasSzigeti "TamasSzigeti (1 commits)")

---

Tags

symfonyMessengerenqueue

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/jwage-phpamqplib-messenger/health.svg)

```
[![Health](https://phpackages.com/badges/jwage-phpamqplib-messenger/health.svg)](https://phpackages.com/packages/jwage-phpamqplib-messenger)
```

###  Alternatives

[koco/messenger-kafka

Symfony Messenger Kafka Transport

931.1M1](/packages/koco-messenger-kafka)[bref/symfony-messenger

Symfony Messenger bridge to run with SQS and SNS on AWS Lambda with Bref

721.2M6](/packages/bref-symfony-messenger)[petitpress/gps-messenger-bundle

Google Pub/Sub transport for Symfony Messenger

29491.0k3](/packages/petitpress-gps-messenger-bundle)[okvpn/cron-bundle

Docker friendly Symfony cron bundle for handle scheduled tasks consistently, parallel or across a cluster, like Symfony Messenger

19498.7k1](/packages/okvpn-cron-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
