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

v1.0.3(1mo ago)04↑2150%MITPHPPHP &gt;=8.0

Since Mar 21Pushed 1mo 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 1mo ago

READMEChangelogDependencies (3)Versions (5)Used By (0)

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

[](#think-rabbitmq-swoole)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)[![PHP Version](https://camo.githubusercontent.com/5a1de565e262598935368fc6355a11696e80881991a5e0335e8296deb6de5ce9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e302d627269676874677265656e2e737667)](https://www.php.net)[![Swoole](https://camo.githubusercontent.com/07e13d9cff776a2d266136026edcdf653ac036324db45c69be0684837709e199/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73776f6f6c652d253345253344342e352d6f72616e67652e737667)](https://www.swoole.com)[![ThinkPHP](https://camo.githubusercontent.com/a2a3e84426db3841f37a1828bff76dbeed166b018b45643cf6efded2b68f8ae4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7468696e6b7068702d362e30253743382e302d626c75652e737667)](https://www.thinkphp.cn)[![Think-Swoole](https://camo.githubusercontent.com/7338cfc817945a6c1d3bd803487d6e360721cc18c49cc2287e9485e53bd3f817/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7468696e6b2d2d73776f6f6c652d253545342e312d677265656e2e737667)](https://github.com/top-think/think-swoole)

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

✨ 特性
----

[](#-特性)

- ✅ **协程安全连接池** - 基于 `Swoole\ConnectionPool` 的连接池，协程间隔离
- ✅ **自动连接泄漏检测** - 请求结束时自动检测并回收未归还的连接
- ✅ **Worker 进程管理** - 自动注册和管理 RabbitMQ 消费者 Worker 进程
- ✅ **类型安全** - 完整的类型声明和接口约束
- ✅ **配置驱动** - 灵活的配置管理，支持环境变量
- ✅ **多环境适配** - 自动识别 Swoole 协程环境和 CLI 环境

📦 系统要求
------

[](#-系统要求)

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

📦 安装
----

[](#-安装)

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

🚀 快速开始
------

[](#-快速开始)

### 1. 发布配置文件

[](#1-发布配置文件)

将扩展包的配置文件复制到你的项目：

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

### 2. 配置 RabbitMQ 连接

[](#2-配置-rabbitmq-连接)

编辑 `config/rabbitmq.php`：

```
return [
    // RabbitMQ 连接配置
    '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.queue',      // 队列名称
            'exchange'      => 'file.log.exchange',   // 交换机名称
            'exchange_type' => 'direct',               // 交换机类型
            'routing_key'   => 'file.log',             // 路由键
            'durable'       => true,                   // 是否持久化
        ],
    ],
];
```

### 3. 配置 Swoole

[](#3-配置-swoole)

编辑 `config/swoole.php`，添加连接池和 Worker 配置：

```
return [
    // 连接池配置
    'pool' => [
        'rabbitmq' => [
            'enable'     => true,    // 是否启用连接池
            'max_active' => 10,      // 最大连接数
        ],
    ],

    // RabbitMQ Worker 进程配置
    'rabbitmq_worker' => [
        'enable' => true,  // 是否启用 Worker 进程
        'queues' => [
            'file_log' => \app\queue\consumer\FileLog::class,
        ],
    ],

    // 重置器配置
    'resetters' => [
        \RabbitMQSwoole\Resetter\RabbitMQResetter::class,
    ],
];
```

### 4. 注册事件监听器

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

编辑 `config/event.php`：

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

📝 使用方法
------

[](#-使用方法)

### 发布消息

[](#发布消息)

```
use RabbitMQSwoole\Service\RabbitMQService;

// 发布消息到队列
RabbitMQService::publish('file_log', [
    'action' => 'upload',
    'tenant_id' => 'xxx',
    'user_id' => 'xxx',
    'file_path' => '/path/to/file.pdf',
]);
```

### 创建消费者

[](#创建消费者)

创建消费者类，实现 `ConsumerInterface` 接口：

```
