我在实现JobQueueEvent时在我的监听器中面临一些问题,这是我的监听器类
class JobStateChangeListener { function onJobStateChange(StateChangeEvent $event) { if ($event->getJob()->isFinished()) { error_log('Job status is isFinished'); } if ($event->getJob()->isPending()) { error_log('Job status is isPending'); } if ($event->getJob()->isFailed()) { error_log('Job status is isFailed'); } if ($event->getJob()->isRunning()) { error_log('Job status is isRunning'); } if ($event->getJob()->isNew()) { error_log('Job status is isNew'); } } }
这是我的service.yml用于添加监听器
services: jobeventlistener: class: ####\SupportBundle\Listener\JobStateChangeListener tags: - { name: jms_job_queue.job_state_change , method: onJobStateChange }
这里是JMSjobQueueBundle如何发送事件https://github.com/schmittjoh/JMSJobQueueBundle/blob/master/Command/RunCommand.php#L182
更新:ISSUE是我运行app / console jms-job-queue时:运行我的监听器而不是用onJobStateChange func编写的error_log,这可能意味着没有监听。让我知道我做错了什么。
答案 0 :(得分:3)
因为app / console找不到--jms-job-id,你需要更改你的app / console文件,只需替换使用Symfony \ Bundle \ FrameworkBundle \ Console \ Application;使用JMS \ JobQueueBundle \ Console \ Application;然后它会正常工作。