Lraravel9无法消费Redis队列问题
1.环境描述
Docker PHP 8.2, Redis 7
2.配置
.env
QUEUE_CONNECTION=redis
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=****
REDIS_PASSWORD=****
REDIS_PORT=6379
.queue
‘redis’ => [
‘driver’ => ‘redis’,
‘connection’ => ‘queues’,
‘queue’ => env(‘REDIS_QUEUE’, ‘default’),
‘retry_after’ => 90,
‘block_for’ => null,
‘after_commit’ => false,
]
database.php
'queues' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '1'),
]
核心类代码
class TimeoutSettlement implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected readonly MissionOrder $missionOrder;
protected readonly User|Model $user;
protected static string $queueName = '{settlement}';
/**
* Create a new job instance.
*/
public function __construct(Model|MissionOrder $missionOrder, Carbon $carbon = null)
{
$this->missionOrder = $missionOrder;
$this->user = $this->getUser($missionOrder->user_id);
$this->onConnection('redis')
->onQueue(self::$queueName)
->delay($carbon ?? now()->addDays(2));
}
}
问题描述
命令行执行 php artisan queue:work redis --queue=queueTest,执行成功,redis正确存入,但是无法消费
,最后查阅资料,发现在阿里云redis下,执行命令php artisan queue:work redis --queue={queueTest},消费成功! 重点是名称需要加上{}!!!,问题解决。