PHPackages                             domraider/bunny - 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. domraider/bunny

ActiveLibrary[Queues &amp; Workers](/categories/queues)

domraider/bunny
===============

Performant pure-PHP AMQP (RabbitMQ) sync/async (ReactPHP) library

0.3.1(9y ago)27.6k1MITPHPPHP &gt;=5.4.0

Since Mar 19Pushed 9y ago4 watchersCompare

[ Source](https://github.com/Domraider/bunny)[ Packagist](https://packagist.org/packages/domraider/bunny)[ RSS](/packages/domraider-bunny/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (2)Dependencies (5)Versions (14)Used By (1)

BunnyPHP
========

[](#bunnyphp)

Fork to handle automatic reconnect :

```
require "vendor/autoload.php";

$loop = \React\EventLoop\Factory::create();
$mq = new \Bunny\Async\Client($loop, [
    'host' => '127.0.0.1',
    'port' => 5672,
    'user' => 'guest',
    'password' => 'guest',
]);

// Connect is refactored to be retryable
$mq->connect()
    ->retryWhen(function ($errors) {
        // Retry to connect on error
        return $errors->delay(2000)
            ->doOnNext(function () {
                echo "Disconnected, retry\n";
            });
    })
    ->flatMap(function () use ($mq) {
        // Open only 1 channel
        return $mq->channel();
    })
    ->subscribeCallback(function (\Bunny\Channel $channel) use ($mq, $loop) {
        echo "connected\n";
        // Publish every 2s
        \Rx\Observable::interval(2000)
            // publish($data, [], 'amq.direct', 'test'))
                    ->map(function () use ($data) {
                        return $data;
                    });

            })
            ->subscribeCallback(
                function ($data) {
                    echo "  {$data} : OK\n";
                },
                function () {
                    echo "error during produce\n";
                }, null,
                new \Rx\Scheduler\EventLoopScheduler($loop)
            );
    }, function (\Exception $e) {
        echo "disconnected : {$e->getMessage()}\n";
    }, null, new \Rx\Scheduler\EventLoopScheduler($loop));

$loop->run();
```

> Performant pure-PHP AMQP (RabbitMQ) sync/async (ReactPHP) library

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~55 days

Recently: every ~77 days

Total

13

Last Release

3413d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bb8639a873e8027a684c61f649e40a62a1797085a20b6344cecc32aa15b7378c?d=identicon)[vince.ve](/maintainers/vince.ve)

---

Top Contributors

[![jakubkulhan](https://avatars.githubusercontent.com/u/95001?v=4)](https://github.com/jakubkulhan "jakubkulhan (35 commits)")[![Vinceveve](https://avatars.githubusercontent.com/u/912570?v=4)](https://github.com/Vinceveve "Vinceveve (22 commits)")[![WyriHaximus](https://avatars.githubusercontent.com/u/147145?v=4)](https://github.com/WyriHaximus "WyriHaximus (19 commits)")[![jsor](https://avatars.githubusercontent.com/u/55574?v=4)](https://github.com/jsor "jsor (2 commits)")[![mente](https://avatars.githubusercontent.com/u/391997?v=4)](https://github.com/mente "mente (1 commits)")[![ondrejmirtes](https://avatars.githubusercontent.com/u/104888?v=4)](https://github.com/ondrejmirtes "ondrejmirtes (1 commits)")[![ReadmeCritic](https://avatars.githubusercontent.com/u/15367484?v=4)](https://github.com/ReadmeCritic "ReadmeCritic (1 commits)")[![kubasimon](https://avatars.githubusercontent.com/u/270200?v=4)](https://github.com/kubasimon "kubasimon (1 commits)")[![etienneroudeix](https://avatars.githubusercontent.com/u/2012682?v=4)](https://github.com/etienneroudeix "etienneroudeix (1 commits)")[![jeroenvdgulik](https://avatars.githubusercontent.com/u/242090?v=4)](https://github.com/jeroenvdgulik "jeroenvdgulik (1 commits)")[![ceeram](https://avatars.githubusercontent.com/u/111448?v=4)](https://github.com/ceeram "ceeram (1 commits)")

---

Tags

messagereactphpqueuerabbitmqmessagingAMQPexchangereactrabbitqueueingbunnyreact-php

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/domraider-bunny/health.svg)

```
[![Health](https://phpackages.com/badges/domraider-bunny/health.svg)](https://phpackages.com/packages/domraider-bunny)
```

###  Alternatives

[bunny/bunny

Performant pure-PHP AMQP (RabbitMQ) non-blocking ReactPHP library

7426.5M37](/packages/bunny-bunny)[php-amqplib/rabbitmq-bundle

Integrates php-amqplib with Symfony &amp; RabbitMq. Formerly emag-tech-labs/rabbitmq-bundle, oldsound/rabbitmq-bundle.

1.3k20.1M65](/packages/php-amqplib-rabbitmq-bundle)[kdyby/rabbitmq

Integrates php-amqplib with RabbitMq and Nette Framework

30693.1k4](/packages/kdyby-rabbitmq)[enqueue/enqueue

Message Queue Library

19820.0M56](/packages/enqueue-enqueue)[prolic/humus-amqp

PHP-AMQP library with RabbitMQ Extensions

76205.4k5](/packages/prolic-humus-amqp)

PHPackages © 2026

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