chenzi / laravel-mns-driver
Aliyun MNS Queue Driver For Laravel
Requires
- php: ~5.5|~7.0
- laravel/framework: ~5.1
Requires (Dev)
- phpunit/phpunit: ~4.0||~5.0
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is not auto-updated.
Last update: 2024-11-04 16:48:11 UTC
README
Install
Via Composer
$ composer require chenzi/laravel-mns-driver
Config
Add following service providers into your providers array in config/app.php
Chenzi\LaravelMNS\LaravelMNSServiceProvider::class
Edit your config/queue.php
, add mns
connection
'mns' => [ 'sms'=> [ 'driver' => 'sms', 'key' => env('QUEUE_MNS_ACCESS_KEY'), 'secret' => env('QUEUE_MNS_SECRET_KEY'), 'endpoint' => env('QUEUE_MNS_ENDPOINT'), 'queue' => env('QUEUE_NAME'), 'wait_seconds' => 30, ], 'email'=> [ 'driver' => 'email', 'key' => env('QUEUE_MNS_ACCESS_KEY'), 'secret' => env('QUEUE_MNS_SECRET_KEY'), 'endpoint' => env('QUEUE_MNS_ENDPOINT'), 'queue' => env('QUEUE_NAME'), 'wait_seconds' => 30, ] ]
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
Usage
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(); });
You also can custom request data format add mns queue with other program
return json_encode( [ 'displayName' => 'App\Jobs\SendSms', 'job' => 'App\Jobs\SendSms', 'maxTries' => null, 'timeout' => null, 'data' => [], ] );
Create queue work, run command in terminal
$ php artisan queue:mns:work sms
Commands
Flush MNS messages on Aliyun
$ php artisan queue:mns:flush
Job handle
class SendSms implements ShouldQueue { ... public function handle(ReceiveMessageResponse $job){ $messageId = $job->getMessageId(); $messageBody = $job->getMessageBody(); //TODO do some thing... } ... }
Security
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
Change log
Please see CHANGELOG for more information what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Credits
License
The MIT License (MIT). Please see License File for more information.