calchen/laravel-queue-aliyun-mns

阿里云消息服务 Laravel/Lumen 扩展包(Aliyun MNS for Laravel/Lumen)

2.2.0 2020-10-20 17:40 UTC

This package is auto-updated.

Last update: 2021-12-20 20:04:28 UTC


README

阿里云消息服务(MNS) Laravel/Lumen 扩展包

Style CI Travis CI Coverage Status Latest Stable Version Total Downloads License

English

这是一个基于阿里云 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

配置说明

配置项 必须 说明 备注
driver 驱动名称 默认值:mns,不可修改
access_id 用于身份验证的 AccessKey ID 见下文“安全提醒”
access_key_secret 用于身份验证的 AccessKey Key Secret 见下文“安全提醒”
endpoint 地域节点 见下文“地域节点”
queue 队列名称 -
wait_seconds 即长轮询时长 消费消息

地域节点(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"
        }
    ]
}

开源协议

MIT