控制 Laravel 5 中排队事件的管道

Controlling the tubes for Queued Events in Laravel 5

所以我开始在 L5 中使用队列事件来处理一些逻辑,我想知道是否可以告诉 laravel 在将事件推送到 Beanstalkd 时使用什么管道。

我在文档中看不到任何相关信息。

通过 Event Dispatcher code 挖掘之后。

我发现如果您的事件处理程序上有一个队列方法,laravel 会将参数传递给该方法并让您手动调用 push 方法。

因此,如果您有 SendEmail 事件处理程序,您可以这样做:

<?php namespace App\Handlers\Events;

use App\Events\UserWasCreated;

use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldBeQueued;

class SendEmail implements ShouldBeQueued {
    use InteractsWithQueue;

    public function __construct()
    {
    }

    public function queue($queue, $job, $args)
    {
        // Manually call push
        $queue->push($job, $args, 'TubeNameHere');
        // Or pushOn
        $queue->pushOn('TubeNameHere', $job, $args);
    }

    public function handle(UserWasCreated $event)
    {
        // Handle the event here
    }
}