腾讯云 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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!