chenzi / laravel-mns-driver
阿里云 MNS 队列驱动 For Laravel
dev-master / 1.0.x-dev
2017-05-23 10:27 UTC
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-09-23 16:24:43 UTC
README
安装
通过 Composer
$ composer require chenzi/laravel-mns-driver
配置
将以下服务提供者添加到 config/app.php
文件中的 providers 数组中
Chenzi\LaravelMNS\LaravelMNSServiceProvider::class
编辑你的 config/queue.php
,添加 mns
连接
'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, ] ]
关于 wait_seconds
编辑你的 .env
文件
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/
在生产模式下,你应该将 QUEUE_MNS_ENDPOINT
更新为 internal endpoint
用法
首先在 阿里云 MNS 控制台 创建一个队列并获取队列端点
然后更新 .env
中的 MNS_ENDPOINT
向队列推送测试消息
Queue::push(function($job){ /** * Your statments go here */ $job->delete(); });
你也可以自定义请求数据格式,将 mns 队列与其他程序一起使用
return json_encode( [ 'displayName' => 'App\Jobs\SendSms', 'job' => 'App\Jobs\SendSms', 'maxTries' => null, 'timeout' => null, 'data' => [], ] );
创建队列工作,在终端中运行命令
$ php artisan queue:mns:work sms
命令
在阿里云上刷新 MNS 消息
$ php artisan queue:mns:flush
作业处理
class SendSms implements ShouldQueue { ... public function handle(ReceiveMessageResponse $job){ $messageId = $job->getMessageId(); $messageBody = $job->getMessageBody(); //TODO do some thing... } ... }
安全
在 阿里云 RAM 控制台 创建 RAM 访问控制
-
创建一个自定义策略,例如
AliyunMNSFullAccessFoobar
{ "Version": "1", "Statement": [ { "Action": "mns:*", "Resource": [ "acs:mns:*:*:*/foobar-local", "acs:mns:*:*:*/foobar-sandbox", "acs:mns:*:*:*/foobar-production" ], "Effect": "Allow" } ] }
-
为你的应用程序创建一个用户,例如
foobar
-
将策略
AliyunMNSFullAccessFoobar
分配给用户foobar
-
为用户
foorbar
创建并获取AccessKeyId
和AccessKeySecret
-
在
.env
中更新QUEUE_MNS_ACCESS_KEY
和QUEUE_MNS_ACCESS_SECRET
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CONDUCT 了解详细信息。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。