您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman异步消息队列组件-redis-queue
发布时间:2021-12-30 23:01:34编辑:雪饮阅读()
workerman/redis-queue
基于Redis的消息队列,支持消息延迟处理。
安装依赖:
[root@localhost workerman]# composer require workerman/redis-queue
Using version ^1.0 for workerman/redis-queue
./composer.json has been updated
Running composer update workerman/redis-queue
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking workerman/redis-queue (v1.0.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading workerman/redis-queue (v1.0.5)
- Installing workerman/redis-queue (v1.0.5): Extracting archive
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
实例:
<?php
use Workerman\Worker;
use Workerman\Timer;
use Workerman\RedisQueue\Client;
require_once __DIR__ . '/vendor/autoload.php';
$client_client_1=0;
$client_client_2=0;
$worker = new Worker();
$worker->onWorkerStart = function () {
$client = new Client('redis://127.0.0.1:6379');
// 订阅 假定逻辑为客户端1只接受一次订阅的消息
$client->subscribe('user-1', function($data) use($client){
global $client_client_1;
if($client_client_1>0){
//客户端1取消订阅
$client->unsubscribe('user-1');
}
else{
echo "user-1\n";
var_export($data);
$client_client_1++;
}
});
// 订阅 假定逻辑为客户端2只接受两次订阅的消息
$client->subscribe('user-2', function($data) use($client){
global $client_client_2;
if($client_client_2>1){
//客户端2取消订阅
$client->unsubscribe('user-2');
}
else{
echo "user-2\n";
var_export($data);
$client_client_2++;
}
});
// 定时向队列发送消息
Timer::add(1, function()use($client){
$client->send('user-1', ['some1', 'data1']);
$client->send('user-2', ['some2', 'data2']);
});
};
Worker::runAll();
实例运行时:
[root@localhost workerman]# php redisQueue.php start
Workerman[redisQueue.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.26 PHP version:7.3.31
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
user-1
array (
0 => 'some1',
1 => 'data1',
)user-2
array (
0 => 'some2',
1 => 'data2',
)user-2
array (
0 => 'some2',
1 => 'data2',
)
关键字词:workerman,异步,redis,queue