示例#1
0
 public function callback(AMQPMessage $message)
 {
     $this->condition->incrementMessagesCount();
     $result = $this->consumer->callback($message->body);
     if ($result) {
         $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
     } else {
         $message->delivery_info['channel']->basic_nack($message->delivery_info['delivery_tag'], false, true);
     }
     return $result;
 }
示例#2
0
 public function subscribe(Consumer $consumer, ExecutionCondition $condition)
 {
     if (array_key_exists($consumer->getConfig()->getDestination(), $this->messageList)) {
         $msgList = $this->messageList[$consumer->getConfig()->getDestination()];
         foreach ($msgList as $key => $msg) {
             if ($condition->isValid()) {
                 $condition->incrementMessagesCount();
                 $consumer->callback($msg['message']);
                 unset($this->messageList[$consumer->getConfig()->getDestination()][$key]);
             }
         }
     }
 }
示例#3
0
 /**
  * @inheritdoc
  */
 public function subscribe(Consumer $consumer, ExecutionCondition $condition)
 {
     $this->stompClient->subscribe($consumer->getConfig()->getDestination());
     while ($condition->isValid()) {
         if ($message = $this->stompClient->readMessage(10)) {
             $condition->incrementMessagesCount();
             $result = $consumer->callback($message->getBody());
             if ($result) {
                 $message->ack();
             } else {
                 $message->nack();
             }
         }
     }
 }