/** * 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; }
/** * @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; }
/** * @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); } }
/** * @inheritdoc */ public function reject(int $deliveryTag, int $flags = Constants::AMQP_NOPARAM) { $this->queue->reject($deliveryTag, $flags); }
/** * @inheritdoc */ public function reject($deliveryTag, $flags = AMQP_NOPARAM) { $this->delegate->reject($deliveryTag, self::convertToDelegateFlags($flags)); }
/** * @param string $deliveryTag * @param boolean $requeue * @return mixed */ public function basic_reject($deliveryTag, $requeue = true) { $this->queue->reject($deliveryTag, $requeue ? AMQP_REQUEUE : AMQP_NOPARAM); }