阅读(3497) (7)

Laravel 8 自定义队列连接 & 队列名称

2021-07-02 16:44:03 更新

如果你想要自定义事件监听器所使用的队列的连接和名称,你可以在监听器类中定义 $connection$queue$delay 属性:

<?php

namespace App\Listeners;

use App\Events\OrderShipped;
use Illuminate\Contracts\Queue\ShouldQueue;

class SendShipmentNotification implements ShouldQueue
{
    /**
     * 任务将被发送到的连接的名称
     *
     * @var string|null
     */
    public $connection = 'sqs';

    /**
     * 任务将被发送到的队列的名称
     *
     * @var string|null
     */
    public $queue = 'listeners';

    /**
     * 任务被处理的延迟时间(秒)
     *
     * @var int
     */
    public $delay = 60;
}

如果你想在运行时定义监听器的队列,可以在监听器上定义一个 viaQueue 方法:

/**
 * 获取监听器队列的名称
 *
 * @return string
 */
public function viaQueue()
{
    return 'listeners';
}