控制 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
}
}
所以我开始在 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
}
}