calchen / laravel-queue-aliyun-mns by calchen

阿里云消息服务 Laravel/Lumen 扩展包(Aliyun MNS for Laravel/Lumen)
288
10
1
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-12-17 03:03:19
Package Statistics
Total Downloads: 288
Monthly Downloads: 2
Daily Downloads: 0
Total Stars: 10
Total Watchers: 1
Total Forks: 0
Total Open Issues: 0

English

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

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