The Laravel adaptation of aliyun messaging service (MNS) is essentially the addition of MNS drivers to Laravel's queues. Includes aliyun MNS SDK, which is necessary for Laravel to use MNS transparently.
Changes from lokielse/laravel-mns to modify some of the content added manually call news release, added the laravel 6.0 support.
Via Composer
$ composer require dyjh/laravel-mns
Add following service providers into your providers array in config/app.php
Dyjh\LaravelMNS\LaravelMNSServiceProvider::class
Edit your config/queue.php
, add mns
connection
'mns' => [
'driver' => 'mns',
'key' => env('QUEUE_MNS_ACCESS_KEY'),
'secret' => env('QUEUE_MNS_SECRET_KEY'),
'endpoint' => env('QUEUE_MNS_ENDPOINT'),
'queue' => env('QUEUE_NAME'),
'wait_seconds' => 30,
'receiveController' => ReceiveController::class,
]
About wait_seconds
Edit your .env
file
QUEUE_DRIVER=mns
QUEUE_NAME=foobar-local
QUEUE_MNS_ACCESS_KEY=your_acccess_key
QUEUE_MNS_SECRET_KEY=your_secret_key
QUEUE_MNS_ENDPOINT=http://12345678910.mns.cn-hangzhou.aliyuncs.com/
You should update QUEUE_MNS_ENDPOINT
to internal endpoint
in production mode
About [ReceiveController], please look at Example
First create a queue and get queue endpoint at Aliyun MNS Console
Then update MNS_ENDPOINT
in .env
Push a test message to queue
Queue::push(function($job){
/**
* Your statments go here
*/
$job->delete();
});
Create queue listener, run command in terminal
$ php artisan queue:listen
or only create the receiver queue
$ php artisan queue:work mns
Flush MNS messages on Aliyun
$ php artisan queue:mns:flush
Send The Message to Aliyun MNS
$sender = new MNSSender("test");
$res = $sender->push("testMessage");
Create RAM access control at Aliyun RAM Console
-
Create a custom policy such as
AliyunMNSFullAccessFoobar
{ "Version": "1", "Statement": [ { "Action": "mns:*", "Resource": [ "acs:mns:*:*:*/foobar-local", "acs:mns:*:*:*/foobar-sandbox", "acs:mns:*:*:*/foobar-production" ], "Effect": "Allow" } ] }
-
Create a user for you app such as
foobar
-
Assign the policy
AliyunMNSFullAccessFoobar
to the userfoobar
-
Create and get the
AccessKeyId
andAccessKeySecret
for userfoorbar
-
update
QUEUE_MNS_ACCESS_KEY
andQUEUE_MNS_ACCESS_SECRET
in.env
$ composer test
The MIT License (MIT). Please see License File for more information.