nineinchnick/yii2-nfy

一个通用的消息队列接口,为 Yii 2.0 框架提供各种实现。包括基本接口。

安装次数: 788

依赖者: 0

建议者: 0

安全: 0

星标: 61

关注者: 22

分支: 11

开放问题: 7

类型:yii2-module

v0.9.0 2015-02-27 14:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:47:42 UTC


README

这是一个为 Yii 2.0 框架 提供的模块,提供了以下功能:

  • 一个通用的队列组件
  • 发布/订阅消息传递模式
  • 一个 SQL 数据库队列实现
  • 一种配置方式,可以将各种通知、消息和任务发送到队列
  • 一个基本的小部件,可以从队列中读取项目并将其显示为系统通知
  • 一个基本的小部件,可以放入导航栏中,显示弹出通知或消息
  • 一个基本的 CRUD,用于管理或调试队列或用作简单的消息传递工具

消息可以直接作为字符串传递,也可以从某些对象(如 Active Record)创建。这可以用于记录模型的所有更改,就像 audittrail2 扩展一样。

当接收者订阅了一个频道时,消息传递可以依赖于类别过滤,就像框架提供的日志系统中一样。

如果不可用或不需要消息队列服务器,提供了一个简单的 SQL 队列实现。

安装

  1. 使用您首选的方法安装 Yii2
  2. 通过 composer 安装包
  • 运行 php composer.phar require nineinchnick/yii2-nfy "dev-master" 或在 composer.json 的 require 部分添加 "nineinchnick/yii2-nfy": "dev-master"
  • 如果将使用 Redis 队列,也安装 "yiisoft/yii2-redis"
  1. 更新配置文件 config/web.php 如下所示。查看模块以获取更多选项。

在配置中启用模块。在主配置和命令行配置中都要这样做,因为一些设置在迁移中使用。

将迁移复制到您的迁移文件夹,并调整文件和类名中的日期。然后应用迁移。

将一些队列定义为应用程序组件,并可选地启用模块,请参阅下一节。

$config = [
    // .........
	'aliases' => [
		'@nineinchnick/nfy' => '@vendor/nineinchnick/yii2-nfy',
	],
	'modules' => [
		'nfy' => [
			'class' => 'nineinchnick\nfy\Module',
		],
	],
	'components' => [
		'dbmq' => [
			'class' => 'nineinchnick\nfy\components\DbQueue',
			'id' => 'queue',
			'label' => 'Notifications',
			'timeout' => 30,
		],
		'sysvmq' => [
			'class' => 'nineinchnick\nfy\components\SysVQueue',
			'id' => 'a',
			'label' => 'IPC queue',
		],
		'redismq' => [
			'class' => 'nineinchnick\nfy\components\RedisQueue',
			'id' => 'mq',
			'label' => 'Redis queue',
			'redis' => 'redis',
		],
		// ..........
	],
]

然后您可以通过该组件发送和接收消息

// send one message 'test'
Yii::$app->dbmq->send('test');
// receive all available messages without using subscriptions and immediately delete them from the queue
$messages = $queue->receive();

或者您可以将一些用户订阅到它

Yii::$app->queue->subscribe(Yii:$app->user->getId());
// send one message 'test'
Yii::$app->queue->send('test');
// receive all available messages for current user and immediately delete them from the queue
$messages = $queue->receive(Yii:$app->user->getId());
// if there are any other users subscribed, they will receive the message independently

模块参数

通过指定 userClass 属性中的用户模型类名,在迁移中将使用适当的表名和主键列名。

显示通知

将它们放在您的布局、视图或控制器中的任何位置。

$this->widget('nfy.extensions.webNotifications.WebNotifications', array('url'=>$this->createUrl('/nfy/default/poll', array('id'=>'queueComponentId'))));

接收消息

通过配置 WebNotifications 小部件,消息可以被

  • 轮询使用 AJAX(在固定间隔重复请求)一个检查队列并返回新项目的操作
  • 连接到 WebSocket 并等待新项目

更新日志

0.95 - 2014-01-15

从 Yii 1 迁移后的首次发布。