コード例 #1
0
ファイル: ConsumeEvent.php プロジェクト: gallna/amqp-event
 /**
  * Mark a message as explicitly not acknowledged.
  * The AMQP specification defines the basic.reject method that allows clients
  * to reject individual, delivered messages, instructing the broker
  * to either discard them or requeue them.
  *
  * @param integer $flags AMQP_REQUEUE to requeue the message(s),
  * @return bool
  */
 public function reject($flags = AMQP_REQUEUE)
 {
     if (!$this->consumed) {
         return $this->consumed = $this->queue->reject($this->getDeliveryTag(), $flags);
     }
     return $this->consumed;
 }
コード例 #2
0
 /**
  * @param \AMQPEnvelope            $envelope
  * @param \AMQPQueue               $queue
  * @param PushPipe                 $pushPipe
  * @param string                   $errorQueue
  * @param ReceiveCancellationToken $cancellationToken
  * @param EndpointControlToken     $endpointControlToken
  *
  * @return bool
  */
 public function process(\AMQPEnvelope $envelope, \AMQPQueue $queue, PushPipe $pushPipe, $errorQueue, ReceiveCancellationToken $cancellationToken, EndpointControlToken $endpointControlToken)
 {
     try {
         $messageId = '';
         $headers = [];
         $pushMessage = false;
         try {
             $messageId = $this->messageConverter->retrieveMessageId($envelope);
             $headers = $this->messageConverter->retrieveHeaders($envelope);
             $pushMessage = true;
         } catch (\Exception $e) {
             $this->routingTopology->sendToQueue($this->brokerModel, $errorQueue, $envelope->getBody(), ['headers' => $envelope->getHeaders()]);
         }
         if ($pushMessage) {
             $pushPipe->push(new PushContext($messageId, $headers, $envelope->getBody() ?: '', $cancellationToken, $endpointControlToken));
         }
         if ($cancellationToken->isCancellationRequested()) {
             $queue->reject($envelope->getDeliveryTag(), AMQP_REQUEUE);
         } else {
             $queue->ack($envelope->getDeliveryTag());
         }
     } catch (CriticalErrorException $e) {
         // just ... die
         throw $e;
     } catch (\Exception $e) {
         $queue->reject($envelope->getDeliveryTag(), AMQP_REQUEUE);
     }
     if ($endpointControlToken->isShutdownRequested()) {
         return false;
     }
     return true;
 }
コード例 #3
0
ファイル: Queue.php プロジェクト: csharpru/yii2-amqp
 /**
  * @param string $deliveryTag
  * @param int    $flags
  *
  * @return bool
  */
 public function reject($deliveryTag, $flags = Client::NOPARAM)
 {
     try {
         return $this->rawQueue->reject($deliveryTag, $flags);
     } catch (\Exception $e) {
         ClientHelper::throwRightException($e);
     }
 }
コード例 #4
0
ファイル: Queue.php プロジェクト: prolic/HumusAmqp
 /**
  * @inheritdoc
  */
 public function reject(int $deliveryTag, int $flags = Constants::AMQP_NOPARAM)
 {
     $this->queue->reject($deliveryTag, $flags);
 }
コード例 #5
0
ファイル: Queue.php プロジェクト: treehouselabs/queue
 /**
  * @inheritdoc
  */
 public function reject($deliveryTag, $flags = AMQP_NOPARAM)
 {
     $this->delegate->reject($deliveryTag, self::convertToDelegateFlags($flags));
 }
コード例 #6
0
 /**
  * @param  string $deliveryTag
  * @param  boolean $requeue
  * @return mixed
  */
 public function basic_reject($deliveryTag, $requeue = true)
 {
     $this->queue->reject($deliveryTag, $requeue ? AMQP_REQUEUE : AMQP_NOPARAM);
 }