按照手冊去做,下載安裝 粘貼代碼
運(yùn)行以后在redis客戶端里可以看到消息投遞成功了,但是在消費(fèi)里面打印得日志沒有任何東西,是不是沒有消費(fèi)成功,可是也沒有任何報錯,搞不懂問題出在哪里
<?php
return [
'default' => [
'host' => 'redis://120.0.0.1:6379',
'options' => [
'auth' => '', // 密碼,字符串類型,可選參數(shù)
'db' => 0, // 數(shù)據(jù)庫
'prefix' => '', // key 前綴
'max_attempts' => 5, // 消費(fèi)失敗后,重試次數(shù)
'retry_seconds' => 5, // 重試間隔,單位秒
]
],
];
<?php
return [
'consumer' => [
'handler' => Webman\RedisQueue\Process\Consumer::class,
'count' => 8, // 可以設(shè)置多進(jìn)程同時消費(fèi)
'constructor' => [
// 消費(fèi)者類目錄
'consumer_dir' => app_path() . '/queue/redis'
]
]
];
<?php
namespace app\controller;
use support\Request;
use support\Log;
use Webman\RedisQueue\Redis;
class Index
{
public function queue(Request $request)
{
// 隊列名
$queue = 'send-mail';
// 數(shù)據(jù),可以直接傳數(shù)組,無需序列化
$data = ['to' => 'tom@gmail.com', 'content' => 'hello'];
// 投遞消息
Redis::send($queue, $data);
// 投遞延遲消息,消息會在60秒后處理
// Redis::send($queue, $data, 10);
return response('redis queue test');
}
}
<?php
namespace app\queue\redis;
use support\Log;
use Webman\RedisQueue\Consumer;
class MyMailSend implements Consumer
{
// 要消費(fèi)的隊列名
public $queue = 'send-mail';
// 連接名,對應(yīng) plugin/webman/redis-queue/redis.php 里的連接`
public $connection = 'default';
// 消費(fèi)
public function consume($data)
{
// 無需反序列化
Log::info($data); // 輸出 ['to' => 'tom@gmail.com', 'content' => 'hello']
}
}
Log::info($data)
$data
是數(shù)組,Log::info()不能傳數(shù)組,報錯了沒消費(fèi)成功
重啟了下,確實沒有啟動消費(fèi)進(jìn)程,消費(fèi)進(jìn)程配置代碼 是直接在 vendor文件下 webman/redis-queue/src/config/plugin/webman/redis-queue/process.php中 不知道是不是在這里 所以才啟動不了
問題是config/plugin/webman/redis-queue/process.php 這個路徑我安裝得框架 只有vendor里面才有 框架里得config下 沒有/plugin/webman/redis-queue/ 這個些目錄 直接就是 process.php
redis-queue有配置文件要啟動要配置你關(guān)聯(lián)的消費(fèi)文件,不然你怎么消費(fèi)```php
'consumer' => [
'handler' => Webman\RedisQueue\Process\Consumer::class,
'count' => 4, // 可以設(shè)置多進(jìn)程同時消費(fèi)
'constructor' => [
// 消費(fèi)者類目錄
'consumer_dir' => app_path() . '/queue'
]
]