Package Data | |
---|---|
Maintainer Username: | calchen |
Maintainer Contact: | contact@chenky.com (陈恺垣) |
Package Create Date: | 2019-08-31 |
Package Last Update: | 2020-10-20 |
Home Page: | https://packagist.org/packages/calchen/laravel-queue-aliyun-mns |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-09 15:03:10 |
Package Statistics | |
---|---|
Total Downloads: | 286 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 10 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
这是一个基于阿里云 MNS SDK的 Laravel/Lumen 队列驱动扩展包
Laravel/Lumen 5.5 ~ 5.6 Docs
$ composer require calchen/laravel-queue-aliyun-mns:^1.0
Laravel/Lumen 5.7+
$ composer require calchen/laravel-queue-aliyun-mns:^2.0
Laravel 5.5+ 已经实现了扩展包发现机制,您不需要进行额外的加载操作
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
| 配置项 | 必须 | 说明 | 备注 | |------------------- |------ |-------------------------------------- |----------------------- | | driver | 是 | 驱动名称 | 默认值:mns,不可修改 | | access_id | 是 | 用于身份验证的 AccessKey ID | 见下文“安全提醒” | | access_key_secret | 是 | 用于身份验证的 AccessKey Key Secret | 见下文“安全提醒” | | endpoint | 是 | 地域节点 | 见下文“地域节点” | | queue | 是 | 队列名称 | - | | wait_seconds | 否 | 即长轮询时长 | 消费消息|
在阿里云 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
本项目使用了阿里云 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"
}
]
}