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

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

workbunny/webman-rabbitmq
=========================

Webman plugin workbunny/webman-rabbitmq

3.0.2(2w ago)354.2k↓58.2%7[2 issues](https://github.com/workbunny/webman-rabbitmq/issues)1MITPHPPHP ^8.1CI passing

Since Jun 24Pushed 2w ago1 watchersCompare

[ Source](https://github.com/workbunny/webman-rabbitmq)[ Packagist](https://packagist.org/packages/workbunny/webman-rabbitmq)[ RSS](/packages/workbunny-webman-rabbitmq/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (10)Dependencies (33)Versions (49)Used By (1)

 [![workbunny](https://camo.githubusercontent.com/e2b1164338390ab45783434659e3e419e0c3b50fbe140c697ba1f82f59015ad6/68747470733a2f2f6368617a366368657a2e636e2f696d616765732f776f726b62756e6e792d6c6f676f2e706e67)](https://camo.githubusercontent.com/e2b1164338390ab45783434659e3e419e0c3b50fbe140c697ba1f82f59015ad6/68747470733a2f2f6368617a366368657a2e636e2f696d616765732f776f726b62756e6e792d6c6f676f2e706e67)

workbunny/webman-rabbitmq
=========================

[](#workbunnywebman-rabbitmq)

 🐇 A pure-PHP implementation of AMQP for webman/workerman 🐇

 [![Latest Stable Version](https://camo.githubusercontent.com/f4854fa75b446e7510acfc3580b08223ca57f6f559de6464b0a9c0a9c98da6f3/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f762f776f726b62756e6e792f7765626d616e2d7261626269746d712f6c6174657374)](https://packagist.org/packages/workbunny/webman-rabbitmq) [![Total Downloads](https://camo.githubusercontent.com/c4296ccf8f9357e56d8a87518abe07188e396ddbc39c0520ada490fe6e46fcee/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f64742f776f726b62756e6e792f7765626d616e2d7261626269746d71)](https://packagist.org/packages/workbunny/webman-rabbitmq) [![License](https://camo.githubusercontent.com/fa83f9f0ee676d922e7936a74af1475efb53da50431ae7af67544ccaa4303ee8/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f6c6963656e73652f776f726b62756e6e792f7765626d616e2d7261626269746d71)](https://packagist.org/packages/workbunny/webman-rabbitmq) [![PHP Version Require](https://camo.githubusercontent.com/966d5353840bb41d69e1f6fbf68644841b727e564d2de9c5adfc1626952933f4/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f7068702f776f726b62756e6e792f7765626d616e2d7261626269746d71)](https://packagist.org/packages/workbunny/webman-rabbitmq)

---

📖 说明
----

[](#-说明)

> 此文档为 3.0 版本 2.0 LTS 版本请查看 [2.0 文档](https://github.com/workbunny/webman-rabbitmq/blob/2.x/README.md)

✨ 简介
----

[](#-简介)

适配 `Workerman`/`webman` 的 `AMQP` 组件包

### 核心特性

[](#核心特性)

- ✅ 支持基于 `AMQP` 协议工具实现 `AMQP-Server`
- ✅ 支持 5 种消费模式：简单队列、workQueue、routing、pub/sub、exchange
- ✅ 支持延迟队列（RabbitMQ 须安装插件）
- ✅ 支持连接池、通道池，`Builder` 支持影子模式（并发补偿）
- ✅ 3.0 版本相比之前版本，更符合 `AMQP` 协议约定，更合理的架构设计和使用逻辑
    - 使用 `ConnectionManagement` 多连接管理器管理 `Connection`（`Client`），合理复用机制及并发使用能力
    - 使用 `Channel-Pool` 管理 `Channel`，合理的复用和并发机制
    - 提供 `AMQP` 协议包，可供开发者自定义实现 `AMQP-Client` 或 `AMQP-Server`，并提供 `AMQP-Frame` 协议帧工具

---

🏗️ 架构概念
-------

[](#️-架构概念)

```
    ┌───────────┐
    | Builder A | ──┐
    └───────────┘   |                                          | ┌───────────┐
                    |                                          | | Channel 1 |
                    |                                          | └───────────┘
    ┌───────────┐   └─> ┌──────────────────┐                   | ┌───────────┐
    | Builder A | ────> | Connections Pool | ── connection ──> | | Channel 2 |
    └───────────┘   ┌─> └──────────────────┘   min ... MAX     | └───────────┘
                    |                         | ┌───────────┐
                    |                                          | | Channel 3 |
    ┌───────────┐   |                                          | └───────────┘
    | Builder C | ──┘                                                 ...
    └───────────┘                                                 channel-max

```

### 核心组件说明

[](#核心组件说明)

#### 🔨 Builder

[](#-builder)

队列消费者、生产者的抽象结构，类似 `ORM` 的 `Model`

- **BuilderConfig**: 队列配置结构
- `Builder` 可以指定不同的 `connection` 配置进行连接，以区分业务/服务
- `Builder` 的 `publish`/`consume` 使用了影子模式（当前 `Connection` 的 `Channel` 耗尽时，会自动从 `Connection Pool` 获取新的连接创建 `Channel`）
    - 影子模式下请尽量将 `Connection Pool` 和 `Channels Pool` 的配置 `wait_timeout` 改小，避免过长时间的等待（等待中会出让控制权，不会阻塞）

#### 🔗 Connection

[](#-connection)

基于 `AsyncTcpConnection` 封装的 `AMQP-client`

- `Connection` 由 `ConnectionManagement` 管理，连接池为静态，不会因为 `Builder` 的释放而释放
- `Connection Pool` 中通过 `get` 拿取 `Connection` 后需要手动调用 `release` 归还，或者使用 `action` 通过传入回调函数来执行并自动归还
- **配置信息**：
    - `min_connections`: 最小连接数
    - `max_connections`: 最大连接数
    - `idel_timeout`: 空闲回收时间 \[s\]
    - `wait_timeout`: 等待连接超时时间 \[s\]

#### 📡 Channel

[](#-channel)

抽象的通道对象

- 每一个 `Connection` 都具备一个 `Channel` 池
    - 多协程时，自动创建新的 `Channel` 消费，并在协程结束后自动归还/释放
    - 单协程时，复用 `Channel` 消费
- **配置信息**：
    - `idel_timeout`: 空闲回收时间 \[s\]
    - `wait_timeout`: 等待连接超时时间 \[s\]

#### 📦 AMQP

[](#-amqp)

`workerman` 支持的协议封装

---

📚 **[查看详细文档](https://workbunny.github.io/webman-rabbitmq/)**

📚 **[AMQP 0-9-1 协议帧对照表](https://github.com/workbunny/webman-rabbitmq/blob/master/src/Connection/README.md)**

---

🚀 快速开始
------

[](#-快速开始)

### 系统要求

[](#系统要求)

- PHP &gt;= 8.1
- webman-framework &gt;= 2.0 或 workerman &gt;= 5.1
- rabbitmq-server &gt;= 3.10

### 安装

[](#安装)

```
composer require workbunny/webman-rabbitmq
```

---

⚙️ 配置
-----

[](#️-配置)

### 基础配置 `app.php`

[](#基础配置-appphp)

```
