簡介
騰訊雲訊息佇列(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 協議》,轉載必須註明作者和本文連結