Ejemplo n.º 1
0
 /**
  * Publishes a message to the backend.
  *
  * @param Message $message
  * @return void
  * @throws \RuntimeException If publishing fails
  */
 public function produce(Message $message)
 {
     $type = $message->getType();
     $body = array('ticket' => $message->getTicket());
     try {
         $this->logger->debug(sprintf('Publish message for job %s to sonata backend', $message->getTicket()), ['type' => $type, 'body' => $body]);
         $queue = $this->registry->get($message->getType())->getQueue();
         $this->backendProvider->getBackend($queue)->createAndPublish($type, $body);
     } catch (\Exception $e) {
         $this->logger->error(sprintf('Failed to publish message (Error: %s)', $e->getMessage()), ['exception' => $e]);
         if (!$e instanceof \RuntimeException) {
             $e = new \RuntimeException($e->getMessage(), $e->getCode(), $e);
         }
         throw $e;
     }
 }
Ejemplo n.º 2
0
 public function testProduce()
 {
     $type = 'JobType';
     $ticket = 'JobTicket';
     $queue = 'QueueName';
     $message = new Message($type, $ticket);
     $jobType = $this->createMock(JobTypeInterface::class);
     $jobType->expects($this->once())->method('getQueue')->willReturn($queue);
     $producerMessage = new DefaultMessage('ConsumeJob', ['type' => $type, 'ticket' => $ticket]);
     $this->registry->expects($this->once())->method('get')->with($message->getType())->willReturn($jobType);
     $this->producer->expects($this->once())->method('produce')->with($producerMessage, $queue);
     $this->subject->produce($message);
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function produce(Message $message)
 {
     $producerMessage = new DefaultMessage('ConsumeJob', ['type' => $message->getType(), 'ticket' => $message->getTicket()]);
     $this->logger->debug('Publish message to bernard queue backend', ['message' => $message]);
     $this->producer->produce($producerMessage, $this->registry->get($message->getType())->getQueue());
 }
Ejemplo n.º 4
0
 /**
  * @param Status $status
  * @dataProvider provideStatusToSkip
  */
 public function testOnMessageSkipsExecutionIfStatusIs(Status $status)
 {
     $message = new Message('job-type', 'job-ticket');
     $job = new Job();
     $job->setType($message->getType());
     $job->setTicket($message->getTicket());
     $job->setStatus($status);
     $this->jobManager->expects($this->any())->method('findByTicket')->willReturn($job);
     $this->dispatcher->expects($this->never())->method('dispatch');
     $this->locker->expects($this->never())->method('lock');
     $this->subject->onMessage($message);
 }