求解 Laravel 使用vladimir-yuldashev/laravel-queue-rabbitmq的问题
1. 运行环境
Laravel Framework 9.52.16
PHP 8.0.2 (cli) (built: Feb 3 2021 18:36:37) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.2, Copyright (c) Zend Technologies
2. 问题描述?
执行消息入队操作失败,不指定交换机则可以成功创建消息队列,但是无法使用php artisan queue:work rabbitmq 命令进行消费
TestMqQueue::dispatch(['id' => 3])->onConnection('rabbitmq')->onQueue('test_ssss');
3. 步骤操作
composer安装rabbitmq
composer require vladimir-yuldashev/laravel-queue-rabbitmq ^13
config\queue.php的connections中增加配置
'rabbitmq' => [
'driver' => 'rabbitmq',
'hosts' => [
[
'host' => env('RABBITMQ_HOST', '127.0.0.1'),
'port' => env('RABBITMQ_PORT', 5672),
'user' => env('RABBITMQ_USER', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
'vhost' => env('RABBITMQ_VHOST', '/'),
],
],
'options' => [
'ssl_options' => [
'cafile' => env('RABBITMQ_SSL_CAFILE', null),
'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
'local_key' => env('RABBITMQ_SSL_LOCALKEY', null),
'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
],
'queue' => [
'job' => VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class,
'exchange' => 'live',
'exchange_type' => 'topic'
],
],
'worker' => env('RABBITMQ_WORKER', 'default'),
],
新建Job
class TestMqQueue implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public array $data;
public function __construct($data)
{
$this->data = $data;
}
/**
* 执行该队列进行消费
* 使用 php artisan queue:work rabbitmq --queue==指定的队列名称 进行消费
* @return void
*/
public function handle()
{
Log::info('消费成功!');
}
}
接口增加并执行该接口
TestMqQueue::dispatch(['id' => 3])->onConnection('rabbitmq')->onQueue('test_ssss');
成功创建交换机,并指定场景,但是test_ssss队列并没有创建成功!
推荐文章: