騰訊雲 CMQ 雲訊息佇列 For Laravel

freyo發表於2018-03-01

簡介

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

相關文章