Download the PHP package uncleqiu/hyperf-rocketmq without Composer
On this page you can find all versions of the php package uncleqiu/hyperf-rocketmq. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download uncleqiu/hyperf-rocketmq
More information about uncleqiu/hyperf-rocketmq
Files in uncleqiu/hyperf-rocketmq
Package hyperf-rocketmq
Short Description hyperf rocketmq sdk
License MIT
Homepage https://github.com/uncleqiu/hyperf-rocketmq.git
Informations about the package hyperf-rocketmq
hyperf_rocketmq
基于阿里云 rocketmq SDK 封装,实现了协程、连接池、消息可靠投递 等功能
1、安装
producer、consumer 创建命令
需要先安装依赖
2、配置
发布配置
配置说明
配置 | 类型 | 默认值 | 备注 |
---|---|---|---|
host | string | HTTP协议客户端接入点 | |
access_key | string | AccessKey ID | |
secret_key | string | AccessKey Secret | |
instance_id | string | 实例id | |
pool | array | 连接池配置 |
3、创建相关数据表
如果不需要记录日志 或 消息不需要可靠投递,可以忽略这步
表说明:
mq_status_log:消息生产状态表
mq_produce_status_log:生成消息状态
mq_consume_log:消费日志
4、投递消息
Producer注解参数
字段名 | 类型 | 描述 | 默认值 |
---|---|---|---|
poolName | string | 连接池名称。对应配置文件 rocketmq.php 中的key | default |
dbConnection | string | 数据库连接名称(用于记录生产日志) | default |
topic | string | topic | 无 |
messageKey | string | 消息key | 随机生成 |
messageTag | string | 消息标签 | 无 |
4.1 定义生产者相关信息
在 DemoProducer 文件中,我们可以修改 @Producer
注解对应的字段来替换对应的 poolName
、topic
、messageTag
。就是最终投递到消息队列中的数据,所以我们可以随意改写 __construct
方法,只要最后赋值 payload
即可。
使用
@Producer
注解时需use Uncleqiu\HyperfRocketMQ\Annotation\Producer;
命名空间;
4.2 普通投递方式
通过Uncleqiu\HyperfRocketMQ\Producer
实例,即可投递消息。
4.3 消息可靠投递方式
目前,消息投递时Rocketmq返回成功响应,就视为投递成功(暂不考虑Rocketmq缓存丢失的问题)。
实现原理:先将需要投递的消息入库处理,然后再进行发送操作
-
执行以下命令,生成相关的数据表
-
使用示例
- 投递失败的消息,可以通过守护进程监听
mq_status_log
数据表status
不等于3的消息,进行重新投递(后面实现)
5、消息消费
Consumer注解属性说明
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
name | string | 消费名称 | 无 |
poolName | string | 连接池名称。对应配置文件 rocketmq.php 中的key | default |
topic | string | topic | 无 |
groupId | string | 消费组id | 无 |
messageTag | string | 消息标签 | 无 |
numOfMessage | int | 每次拉取消息数 | 3 |
waitSeconds | int | 轮询等待时间 | 3 |
processNums | int | 启动消费进程数 | 1 |
enable | bool | 是否初始化启动进程 | true |
在 DemoConsumer文件中,我们可以修改 @Consumer
注解对应的字段来替换对应的 topic
、groupId
、messageTag
。
使用
@Consumer
注解时需use Uncleqiu\HyperfRocketMQ\Annotation\Consumer;
命名空间;
6、事件说明
下面事件都在
Uncleqiu\HyperfRocketMQ\Event
命名空间下
事件 | 说明 |
---|---|
AfterProduce | 消息生产成功触发的事件 |
BeforeConsume | 开启消费前触发的事件 |
AfterConsume | 成功消费后触发的事件 |
FailToConsume | 消费失败触发的事件 |