PHPackages                             roiwk/rabbitmq - 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. roiwk/rabbitmq

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

roiwk/rabbitmq
==============

rabbitmq async(workerman) and sync Client, Producer, Consumer

v2.0.1(11mo ago)5332MITPHPPHP ^8.1

Since Oct 27Pushed 11mo ago1 watchersCompare

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

READMEChangelog (3)Dependencies (6)Versions (14)Used By (0)

RabbitMQ
========

[](#rabbitmq)

rabbitmq async(workerman) and sync PHP Client, Producers, Consumers

rabbitmq 是一个异步（workerman）和同步的PHP客户端，用于异步（workerman）和同步的生产者和消费者。

Dependencies 依赖
===============

[](#dependencies-依赖)

Version TagDependencies^v1.0php &gt;=8.0 workerman &gt;= 4.0^v2.0php &gt;=8.1 workerman &gt;= 5.0Install 安装
==========

[](#install-安装)

```
composer require roiwk/rabbitmq
```

Usage 使用
========

[](#usage-使用)

[All demo](./examples/)

Config Demo
-----------

[](#config-demo)

```
// 配置格式
$config = [
    'host' => '127.0.0.1',
    'port' => 5672,
    'vhost' => '/',
    'mechanism' => 'AMQPLAIN',
    'user' => 'username',
    'password' => 'password',
    'timeout' => 10,
    'heartbeat' => 60,
    'heartbeat_callback' => function(){},
    'error_callback'     => null,
];
```

Publisher Demo
--------------

[](#publisher-demo)

```
// 同步发布者  sync Publisher
Roiwk\Rabbitmq\Producer::connect($config)->publishSync('Hello World!', '', '', 'hello');

// 异步发布者  async Publisher(workerman)

use Workerman\Worker;

$worker = new Worker();
$worker->onWorkerStart = function() use($config) {
    Roiwk\Rabbitmq\Producer::connect($config)->publishAsync('Hello World!', '', '', 'hello');
};
Worker::runAll();
```

Consumer Demo
-------------

[](#consumer-demo)

```
// 同步消费者  sync Consumer

use Bunny\Channel;
use Bunny\Message;
use Bunny\AbstractClient;
use Roiwk\Rabbitmq\AbstractConsumer;

// style 1:
$client = new Roiwk\Rabbitmq\Client($config, null, '', '', 'hello');
$client->syncProcess(function(Message $message, Channel $channel, AbstractClient $client){
    echo " [x] Received ", $message->content, "\n";
    $channel->ack();
});

// style 2:
$consumer = new class ($config) extends AbstractConsumer {
    protected bool $async = false;
    protected string $queue = 'hello';
    protected array $consume = [
        'noAck' => true,
    ];
    public function consume(Message $message, Channel $channel, AbstractClient $client)
    {
        echo " [x] Received ", $message->content, "\n";
    }
};
$consumer->onWorkerStart(null);
```

```
// 异步消费者  async Consumer(workerman)

use Bunny\Channel;
use Bunny\Message;
use Workerman\Worker;
use Bunny\AbstractClient;
use Roiwk\Rabbitmq\AbstractConsumer;

$worker = new Worker();

$consumer = new class ($config) extends AbstractConsumer {

    protected bool $async = true;

    protected string $queue = 'hello';

    protected array $consume = [
        'noAck' => true,
    ];

    public function consume(Message $message, Channel $channel, AbstractClient $client)
    {
        echo " [x] Received ", $message->content, "\n";
    }
};

$worker->onWorkerStart = [$consumer, 'onWorkerStart'];
Worker::runAll();
```

Advanced 高级用法
=============

[](#advanced-高级用法)

webman中自定义进程--消费者
-----------------

[](#webman中自定义进程--消费者)

1.process.php

```
'hello-rabbitmq' => [
    'handler' => app\queue\rabbitmq\Hello::class,
    'count'   => 1,
    'constructor' => [
        'rabbitmqConfig' => $config,
        //'logger' => Log::channel('hello'),
    ],
]
```

2.app\\queue\\rabbitmq\\Hello.php

```
namespace app\queue\rabbitmq;

use Roiwk\Rabbitmq\AbstractConsumer;
use Roiwk\Rabbitmq\Producer;
use Bunny\Channel;
use Bunny\Message;
use Bunny\AbstractClient;

class Hello extends AbstractConsumer
{
    protected bool $async = true;

    protected string $queue = 'hello';

    protected array $consume = [
        'noAck' => true,
    ];

    public function consume(Message $message, Channel $channel, AbstractClient $client)
    {
        echo " [x] Received ", $message->content, "\n";
    }
}
```

webman中自定义进程--分组消费者
-------------------

[](#webman中自定义进程--分组消费者)

类似webman-queue插件, 分组将消费者放同一个文件夹下, 使用同一个worker, 多个进程数处理
1.process.php

```
'hello-rabbitmq' => [
    'handler' => Roiwk\Rabbitmq\GroupConsumers::class,
    'count'   => 2,
    'constructor' => [
        'consumer_dir' => app_path().'/queue/rabbimq',
        'rabbitmqConfig' => $config,
        //'logger' => Log::channel('hello'),
    ],
]
```

2.在 `app_path().'/queue/rabbimq'` 目录下创建php文件, 继承`Roiwk\Rabbitmq\AbstractConsumer`即可, 同上`app\queue\rabbitmq\Hello.php`

Tips
====

[](#tips)

> 1. !!! 此库异步仅支持在workamn环境中, 同步环境都支持. 别的环境,如需异步, 请使用[bunny](https://packagist.org/packages/bunny/bunny)的客户端

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance52

Moderate activity, may be stable

Popularity17

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~54 days

Total

12

Last Release

333d ago

Major Versions

v1.4.2 → v2.0.02025-01-09

PHP version history (2 changes)v1.0.0PHP ^8.0

v2.0.1PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/1beffb7f6ed8456ac0dff0c7f864036e80f1404332ff118d1ebd0e0026d284e0?d=identicon)[roiwk](/maintainers/roiwk)

---

Top Contributors

[![roiwk](https://avatars.githubusercontent.com/u/21002823?v=4)](https://github.com/roiwk "roiwk (7 commits)")

---

Tags

pluginqueuerabbitmqAMQPworkermanwebman

### Embed Badge

![Health badge](/badges/roiwk-rabbitmq/health.svg)

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

###  Alternatives

[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)[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)
