腾讯云 CMQ 云消息队列 For Laravel
简介
腾讯云消息队列(Cloud Message Queue,CMQ)是一种分布式消息队列服务,它能够提供可靠的基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)之间的收发消息,存储在可靠有效的 CMQ 队列中,防止消息丢失。CMQ 支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。#官方文档
Github
https://github.com/freyo/laravel-queue-cmq
安装
composer require freyo/laravel-queue-cmq:5.5.*
如果使用的是5.4
composer require freyo/laravel-queue-cmq:5.4.*
配置
加载Provider
'providers' => [
// ...
Freyo\LaravelQueueCMQ\LaravelQueueCMQServiceProvider::class,
]
配置.env
QUEUE_DRIVER=cmq #指定默认队列为CMQ
CMQ_SECRET_KEY=
CMQ_SECRET_ID=
CMQ_QUEUE_HOST=https://cmq-queue-region.api.qcloud.com #CMQ API地址
CMQ_QUEUE=queue_name #默认监听队列名称
CMQ_QUEUE_POLLING_WAIT_SECONDS=30 #队列轮询间隔时间
CMQ_TOPIC_ENABLE=false #如果你想使用TOPIC模式请填写true
CMQ_TOPIC_FILTER=routing # 指定TOPIC工作方式 routing(路由)或msgtag(标签)
CMQ_TOPIC_HOST=https://cmq-topic-region.api.qcloud.com #CMQ TOPIC API地址
CMQ_TOPIC=topic_name #默认监听TOPIC队列名称
支持的地域:
gz (广州), sh (上海), bj (上海)
在腾讯云console建立好队列后,根据所选地域替换下方API的{region}
部分即可
公网API地址:
cmq-queue-{region}.api.qcloud.com
cmq-topic-{region}.api.qcloud.com
内网API地址(如果你使用的腾讯云CVM):
cmq-queue-{region}.api.tencentyun.com
cmq-topic-{region}.api.tencentyun.com
Supervisor配置
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work cmq --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
上树
//只使用普通队列,使用默认队列名称可省略`onQueue`
dispatch((new Job)->onQueue('queue-name'));
//使用TOPIC队列和标签模式,多个标签用英文逗号分隔
dispatch((new Job)->onQueue('tag1,tag2,tag3'));
//使用TOPIC队列和路由模式
dispatch((new Job)->onQueue('routing-key'));
标签匹配功能说明 https://cloud.tencent.com/document/product...
路由键匹配功能说明 https://cloud.tencent.com/document/product...
本作品采用《CC 协议》,转载必须注明作者和本文链接