事件触发,但未调用侦听器

时间:2019-09-03 23:02:37

标签: php laravel

我有一个名为EmailReceived的事件,当我的一条路线被Mailgun击中时会触发,我有一个名为ProcessEmail的侦听器,该侦听器从电子邮件中解析出一些信息,这部分工作正常。

我创建了另一条路由,以一行代码重新处理电子邮件以触发该事件,并且未调用侦听器。

我已将日志记录添加到每个事件中,这样我就可以查看正在击中的事件和未击中的事件。

// From my EventService Provider

protected $listen = [
   EmailReceived::class => [
      ProcessEmail::class
   ],
];

// My processEmail listener
public function handle(EmailReceived $event)
{
   Log::info("Handling event ProcessEmail");
}

// My routes file
Route::get('incomingEmail/{email}/reprocess', 'InboundEmailController@reprocess');
Route::post('incomingEmail', 'InboundEmailController@receive');

// My controller methods
public function receive()
{
    $e = new InboundEmail;
    Log::info(request()->all());
    $e->content = request()->all();
    $e->save();

    Log::info("Firing event EmailReceived from receive");
    event(new EmailReceived($e));
}

public function reprocess(InboundEmail $e)
{
    Log::info("Firing Event EmailReceived from reprocess");
    event(new EmailReceived($e));
    return redirect()->back();
}

1 个答案:

答案 0 :(得分:0)

在使用望远镜进行进一步调查时,我可以看到两种方法都触发了我的事件,但是我的监听器没有针对两种方法都运行,其他一些日志使我觉得它正在运行。

我的听众正在排队,而且我没有工人在奔跑。