dyjh / laravel-mns
此包聚合了 Laravel 和阿里云 IOT MNS 的消息队列。
Requires
- php: >=7.2.0
- aliyun/aliyun-mns-php-sdk: ^1.1.0
- laravel/framework: >=6.0.0
This package is auto-updated.
Last update: 2024-09-19 12:53:33 UTC
README
阿里云消息服务(MNS)的 Laravel 版本本质上是在 Laravel 的队列中添加 MNS 驱动程序。包括阿里云 MNS SDK,这是 Laravel 透明使用 MNS 所必需的。
从 lokielse/laravel-mns 到修改一些手动添加的内容,调用新闻发布,增加了 Laravel 6.0 支持。
安装
通过 Composer
$ composer require dyjh/laravel-mns
配置
在 config/app.php
中的 providers 数组中添加以下服务提供者
Dyjh\LaravelMNS\LaravelMNSServiceProvider::class
编辑你的 config/queue.php
,添加 mns
连接
'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, ]
关于 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
更新为 内部端点
消息接收器示例
关于 [ReceiveController],请查看 示例
使用方法
首先在 阿里云 MNS 控制台 创建一个队列并获取队列端点
然后更新 .env
中的 MNS_ENDPOINT
向队列推送测试消息
Queue::push(function($job){ /** * Your statments go here */ $job->delete(); });
创建队列监听器,在终端中运行命令
$ php artisan queue:listen
或仅创建接收队列
$ php artisan queue:work mns
命令
在阿里云上刷新 MNS 消息
$ php artisan queue:mns:flush
手动发布消息
将消息发送到阿里云 MNS
$sender = new MNSSender("test"); $res = $sender->push("testMessage");
安全
在 阿里云 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
测试
$ composer test
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件