calchen / laravel-queue-aliyun-mns
阿里云消息服务 Laravel/Lumen 扩展包(Aliyun MNS for Laravel/Lumen)
Requires
- php: ^7.0
- aliyun/aliyun-mns-php-sdk: ^1.1
- illuminate/queue: ^5.5|^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^3.5|^4.0|^5.0|^6.0
- php-coveralls/php-coveralls: ^2.1
README
阿里云消息服务(MNS) Laravel/Lumen 扩展包
这是一个基于阿里云 MNS SDK的 Laravel/Lumen 队列驱动扩展包
安装
推荐使用 composer 进行安装:
$ composer require calchen/laravel-queue-aliyun-mns:^2.0
Laravel
Laravel 5.5+ 已经实现了扩展包发现机制,您不需要进行额外的加载操作
Lumen
Lumen 并未移植扩展包自动发现机制,所以需要手动加载扩展包并复制配置文件。
打开配置文件 bootstrap/app.php
并在大约 81 行左右添加如下内容:
$app->register(Calchen\LaravelQueueAliyunMns\AliyunMnsServiceProvider::class);
将文件系统配置文件从 vendor/laravel/lumen-framework/queue.php
复制到 config/queue.php
配置
打开配置文件 config/queue.php
并在 connections
中添加如下内容:
'mns' => [ 'driver' => 'mns', 'access_key_id' => env('ALIYUN_ACCESS_KEY_ID'), 'access_key_secret' => env('ALIYUN_ACCESS_KEY_SECRET'), 'endpoint' => env('ALIYUN_MNS_ENDPOINT'), 'queue' => env('ALIYUN_MNS_QUEUE'), ],
如果您想将阿里云 MNS 作为默认的队列,那么可以在 .env
文件中设置配置项 QUEUE_CONNECTION=mns
配置说明
地域节点(endpoint)
在阿里云 MNS 控制台选择正确的区域后,点击“获取 Endpoint”按钮查看对应的地域节点。
需要注意的是您看到的地域节点可能是这样的 http(s)://1687399289328741.mns.cn-hangzhou.aliyuncs.com/
,但实际上只能使用 https://1687399289328741.mns.cn-hangzhou.aliyuncs.com/
或 http://1687399289328741.mns.cn-hangzhou.aliyuncs.com/
安全提醒
为了安全,请使用子账户的 AccessKey ID 和 AccessKey Key Secret,请务必不要使用主账户的 AccessKey ID 和 AccessKey Key Secret
RAM 访问控制权限策略参考
本项目使用了阿里云 MNS 的这些方法:GetQueueAttributes、SendMessage、ReceiveMessage、DeleteMessage、ChangeMessageVisibility。
根据阿里云 MNS 文档并践行最佳安全实践,为 RAM 用户授予最小权限。这里以杭州区(cn-hangzhou)名称为 laravel-queue-aliyun-mns 的队列为例:
{ "Version": "1", "Statement": [ { "Action": "mns:GetQueueAttributes", "Resource": [ "acs:mns:cn-hangzhou:*:/queues/laravel-queue-aliyun-mns" ], "Effect": "Allow" }, { "Action": [ "mns:SendMessage", "mns:ReceiveMessage", "mns:DeleteMessage", "mns:ChangeMessageVisibility" ], "Resource": [ "acs:mns:cn-hangzhou:*:/queues/laravel-queue-aliyun-mns/messages" ], "Effect": "Allow" } ] }