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

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

qs9000/rabbitmq-swoole
======================

RabbitMQ service for ThinkPHP with think-swoole coroutine support

1.0.0(2mo ago)023↓93.9%MITPHPPHP &gt;=8.0

Since Jun 4Pushed 2mo agoCompare

[ Source](https://github.com/qs9000/rabbitmq-swoole)[ Packagist](https://packagist.org/packages/qs9000/rabbitmq-swoole)[ RSS](/packages/qs9000-rabbitmq-swoole/feed)WikiDiscussions main Synced 2d ago

READMEChangelogDependencies (9)Versions (6)Used By (0)

Think RabbitMQ Swoole
=====================

[](#think-rabbitmq-swoole)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)[![PHP](https://camo.githubusercontent.com/5a1de565e262598935368fc6355a11696e80881991a5e0335e8296deb6de5ce9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e302d627269676874677265656e2e737667)](https://www.php.net)[![ThinkPHP](https://camo.githubusercontent.com/a2a3e84426db3841f37a1828bff76dbeed166b018b45643cf6efded2b68f8ae4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7468696e6b7068702d362e30253743382e302d626c75652e737667)](https://www.thinkphp.cn)

为 ThinkPHP 集成 RabbitMQ 消息队列，支持 Swoole 协程环境，提供协程安全的连接池和自动消费者进程管理。

特性
--

[](#特性)

- 协程安全连接池（基于 Swoole\\ConnectionPool）
- 自动连接泄漏检测与回收
- Worker 进程自动注册与管理
- 延迟消息支持（基于 rabbitmq\_delayed\_message\_exchange 插件）
- 消息确认与重试机制

环境要求
----

[](#环境要求)

- PHP &gt;= 8.0
- ThinkPHP 6.0 / 8.0
- think-swoole &gt;= 4.1
- php-amqplib &gt;= 3.7
- Swoole &gt;= 4.5

安装
--

[](#安装)

```
composer require qs9000/rabbitmq-swoole
```

安装后，复制配置文件到项目：

```
cp vendor/qs9000/rabbitmq-swoole/src/Config/rabbitmq.php config/rabbitmq.php
```

快速开始
----

[](#快速开始)

### 1. 配置 RabbitMQ

[](#1-配置-rabbitmq)

编辑 `config/rabbitmq.php`：

```
return [
    'connection' => [
        'host'     => env('RABBITMQ_HOST', '127.0.0.1'),
        'port'     => (int) env('RABBITMQ_PORT', 5672),
        'user'     => env('RABBITMQ_USER', 'guest'),
        'password' => env('RABBITMQ_PASSWORD', 'guest'),
        'vhost'    => env('RABBITMQ_VHOST', '/'),
    ],

    'queue' => [
        'file_log' => [
            'name'          => 'file_log',
            'exchange'      => 'amq.direct',
            'exchange_type' => 'direct',
            'routing_key'   => 'file_log',
            'durable'       => true,
        ],
    ],
];
```

### 2. 配置 Swoole

[](#2-配置-swoole)

编辑 `config/swoole.php`：

```
return [
    // 连接池配置
    'pool' => [
        'rabbitmq' => [
            'enable'     => true,
            'max_active' => 10,
        ],
    ],

    // RabbitMQ Worker 配置
    'rabbitmq_worker' => [
        'enable' => true,
        'queues' => [
            'file_log' => \app\queue\consumer\FileLog::class,
        ],
    ],

    // 重置器（自动回收泄漏连接）
    'resetters' => [
        \RabbitMQSwoole\Resetter\RabbitMQResetter::class,
    ],
];
```

### 3. 注册事件监听

[](#3-注册事件监听)

编辑 `config/event.php`：

```
return [
    'subscribe' => [
        \RabbitMQSwoole\Listener\SwooleInitListener::class,
    ],
];
```

使用方法
----

[](#使用方法)

### 发布消息

[](#发布消息)

```
use RabbitMQSwoole\Service\RabbitMQService;

// 普通消息
RabbitMQService::publish('file_log', [
    'action' => 'upload',
    'file_path' => '/path/to/file.pdf',
]);

// 延迟消息（延迟 60 秒）
RabbitMQService::publish('file_log', [
    'action' => 'cleanup',
    'file_id' => 'xxx',
], '', 60);
```

### 创建消费者

[](#创建消费者)

```
