我尝试使用https://github.com/fervo/FervoDeferredEventBundle以便让异步事件在我的数据库中存储数据。事件正确地添加到RabbitMQ队列,但事件监听器和事件本身永远不会被执行。
我尝试两种方式:首先让听众完成工作,并手动调度deferevent。
有什么想法吗? 谢谢!
在我的控制器中:
$event = new DeferEvent('save.data', new SaveDataEvent($data));
$this->get('event_dispatcher')->dispatch('fervo.defer', $event);
SaveDataEvent.php
<?php
namespace AppBundle\Event;
use Symfony\Component\EventDispatcher\Event;
class SaveDataEvent extends Event
{
protected $data;
public function __construct($data)
{
$this->data = $data;
}
public function getData()
{
return $this->data;
}
public function saveData()
{
$data = $this->getData();
// do more stuff
}
}
SaveDataListener.php
<?php
namespace AppBundle\EventListener;
use AppBundle\Event\SaveDataEvent;
class SaveDataListener
{
/**
* @var SaveDataEvent
*/
public function onSendData(SaveDataEvent $event)
{
$data = $event->saveData();
}
}
services.yml
app.save_data_listener:
class: AppBundle\EventListener\SaveDataListener
tags:
-
name: kernel.event_listener #fervo_deferred_event.listener
event: send.data
答案 0 :(得分:0)
阅读文档,您应该修复services.yml
:
app.save_data_listener:
class: AppBundle\EventListener\SaveDataListener
tags:
name: fervo_deferred_event.listener
event: fervo.defer
如果您愿意,将fervo.defer
替换为传递给dispatch()
方法的第一个值,它是调度事件的名称。