Symfony2 JMSJobQueueBundle监听器实现

时间:2012-11-22 08:21:28

标签: symfony

我在实现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,这可能意味着没有监听。让我知道我做错了什么。

1 个答案:

答案 0 :(得分:3)

因为app / console找不到--jms-job-id,你需要更改你的app / console文件,只需替换使用Symfony \ Bundle \ FrameworkBundle \ Console \ Application;使用JMS \ JobQueueBundle \ Console \ Application;然后它会正常工作。