Skip to content

Latest commit

 

History

History
120 lines (94 loc) · 4.86 KB

README_en.md

File metadata and controls

120 lines (94 loc) · 4.86 KB

laravel-queue-aliyun-mns

Aliyun MNS for Laravel/Lumen

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

中文

This is a queue drive for Laravel/Lumen base on Aliyun MNS SDK

Installing

Composer is recommended for installation:

$ composer require calchen/laravel-queue-aliyun-mns:^2.0

Laravel

For Laravel 5.5+ package auto discovery feature will help you loading everything you need

Lumen

Open your bootstrap/app.php and add this line

$app->register(Calchen\LaravelQueueAliyunMns\AliyunMnsServiceProvider::class);

Copy configuration file from vendor/laravel/lumen-framework/queue.php to config/queue.php

Configuration

Open your config/queue.php and add these lines in connections section

'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'),
],

If you want to use MNS by default, set QUEUE_CONNECTION=mns in .env

Details

key required remarks
driver Y default:mns, Do not change!
access_id Y See 'Security'
access_key_secret Y See 'Security'
endpoint Y See 'Endpoint'
queue Y -
wait_seconds N Polling waiting time, See ReceiveMessage

Endpoint

Open Aliyun MNS console. Select the region where the queue is located. You will see endpoint if click the button 'Get Endpoint'

It's important to note that you can see endpoint may be such http(s)://1687399289328741.mns.cn-hangzhou.aliyuncs.com/, but in fact can only use https://1687399289328741.mns.cn-hangzhou.aliyuncs.com/ or http://1687399289328741.mns.cn-hangzhou.aliyuncs.com/

Security

For security you should use AccessKey ID and AccessKey Key Secret of RAM users, and should never use AccessKey ID and AccessKey Key Secret of cloud account

Reference for RAM policy

These MNS API is used by current project: GetQueueAttributes、SendMessage、ReceiveMessage、DeleteMessage、ChangeMessageVisibility。

According to MNS document and implement best security practices, grant minimum permissions to users as needed. Here is a example policy for a queue, named for laravel-queue-aliyun-mns, which created in HangZhou China (cn-hangzhou):

{
    "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"
        }
    ]
}

License

MIT