# 目录总览
```
|--- Producer.php
|--- Consumer.php
|--- Queue.php
|--- Driver
|---|--- QueueI.php
|---|--- MysqlDriver.php
|---|--- RedisDriver.php
|---|--- Job.php
|--- queue.sql
```
# 文件作用介绍
- Producer.php
生产者,用于生成消息
- Consumer.php
消费者,用于消费消息
- Queue.php
队列操作类,为生产者和消费者提供一组统一的消息队列操作接口
- Driver/QueueI.php
队列操作接口,规范为Queue.php提供具体服务的驱动类,所有驱动类必须实现此接口,以确保有能力为Queue.php提供底层服务
- Driver/MysqlDriver.php
Mysql队列操作驱动,负责与Mysql的底层操作
- Driver/RedisDriver.php
Redis队列操作驱动,负责与Redis的底层操作
- Driver/Job.php
统一的消息结构(数据格式),可以参考下面《数据格式》的介绍理解此文件的作用
- queue.sql
这是一个 sql 文件,里面是 mysql 消息队列表的表结构
# 数据格式
接着,我们需要统一「消息」的格式。
我们知道,生产者和消费者,同时依赖于消息队列,它们对消息进行处理的时候,则依赖于消息格式。
**统一的消息格式,就像是面向对象中的接口,使调用方和实现方,都在规范轨迹之内工作。**
所以,我们添加了一个文件:
- Job.php
# 调用流程
![调用流程](https://box.kancloud.cn/91d8dd58498fd0b4e81aeec979ef95bc_442x850.png)