dyjh/laravel-mns

此包聚合了 Laravel 和阿里云 IOT MNS 的消息队列。

dev-master 2020-01-19 02:07 UTC

This package is auto-updated.

Last update: 2024-09-19 12:53:33 UTC


README

Latest Version on Packagist Software License Total Downloads

阿里云消息服务(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 访问控制

  1. 创建一个自定义策略,例如 AliyunMNSFullAccessFoobar

    {
      "Version": "1",
      "Statement": [
    	{
    	  "Action": "mns:*",
    	  "Resource": [
    		"acs:mns:*:*:*/foobar-local",
    		"acs:mns:*:*:*/foobar-sandbox",
    		"acs:mns:*:*:*/foobar-production"
    	  ],
    	  "Effect": "Allow"
    	}
      ]
    }
    
  2. 为你的应用创建一个用户,例如 foobar

  3. 将策略 AliyunMNSFullAccessFoobar 分配给用户 foobar

  4. 为用户 foorbar 创建并获取 AccessKeyIdAccessKeySecret

  5. .env 中更新 QUEUE_MNS_ACCESS_KEYQUEUE_MNS_ACCESS_SECRET

测试

$ composer test

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件