2012-11-22 4 views
1
JobQueueEvent을 구현하는 동안 나는 내 리스너에 몇 가지 문제에 직면하고있다

, 여기에 내 내 리스너 클래스Symfony2 JMSJobQueueBundle 리스너 구현

 
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'); 
     } 
    } 
} 

입니다 그리고 여기 여기 리스너

 
services: 
    jobeventlistener: 
     class: ####\SupportBundle\Listener\JobStateChangeListener 
     tags: 
      - { name: jms_job_queue.job_state_change , method: onJobStateChange } 

을 추가 내 service.yml입니다 입니다 JMSjobQueueBundle 디스패치 이벤트 https://github.com/schmittjoh/JMSJobQueueBundle/blob/master/Command/RunCommand.php#L182

업데이트 : 문제는 app/console을 실행할 때입니다. jms-job-queue : onJobStateChange func로 작성된 error_log가 아닌 리스너를 실행합니다. 리스닝하지 않을 수도 있습니다. 내가 뭘 잘못하고 있는지 알려줘.

+0

겪고있는 문제는 무엇입니까? 너는 그걸 언급하지 않았다. –

+0

@ P.R.Ribeiro가 내 문제를 추가했습니다. –

답변

2

그 이유는 app/console이 --jms-job-id를 찾지 못하기 때문에 app/console 파일을 변경해야하기 때문에 Symfony \ Bundle \ Bundle \ ConsoleBundle \ Console \ Application; JMS \ JobQueueBundle \ Console \ Application을 사용합니다. 다음 그것은 잘 작동합니다.