【发布时间】:2015-07-26 15:15:29
【问题描述】:
我正在处理多个队列,并希望将一个事件推送到另一个队列而不是默认队列。
我有一个实现 ShouldQueue 的标准事件类,但是如何指定这个事件将被推送到的队列?
我试过了
class NewMessageArrived extends Event implements ShouldQueue
{
use SerializesModels;
protected $queue = 'redis';
....
但这不符合我的要求。有没有办法做到这一点?
【问题讨论】:
-
在使用 Laravel 源代码花了一些时间之后,我相当确定这是不可能的。 Events/Dispatcher.php 的
createClassCallable检查您的类是否实现了ShouldQueue,如果是,则调用Dispatcher 的createQueuedHandlerCallable()方法,然后通过调用$this->resolveQueue()->push()将您的事件排队。 -
这也是我的研究结果。我认为可以通过在事件调用之前设置
Config::set('queue.default','redis')来实现,但是这样做时我有一些队列被推到了错误的队列中。我现在已经改变了处理队列的方式。如果您想发表评论作为答案,我会接受。 @Ben 谢谢你的时间! -
是的,我对更改默认队列也有同样的想法,但这似乎是错误的并且容易出错。
标签: php laravel queue laravel-5.1