getDeliveryTag() публичный Метод

Get the delivery tag of the message.
public getDeliveryTag ( ) : string
Результат string The delivery tag of the message.
Пример #1
0
 public function getEnvelope()
 {
     if (!$this->envelope) {
         $class = $this->envelope_skeleton;
         $this->envelope = new $class($this->original->getExchangeName(), $this->original->getRoutingKey(), $this->original->getDeliveryTag(), $this->original->isRedelivery());
     }
     return $this->envelope;
 }
Пример #2
0
 public static function castEnvelope(\AMQPEnvelope $c, array $a, Stub $stub, $isNested, $filter = 0)
 {
     $prefix = Caster::PREFIX_VIRTUAL;
     if (!($filter & Caster::EXCLUDE_VERBOSE)) {
         $a += array($prefix . 'body' => $c->getBody());
     }
     $a += array($prefix . 'routingKey' => $c->getRoutingKey(), $prefix . 'deliveryTag' => $c->getDeliveryTag(), $prefix . 'deliveryMode' => new ConstStub($c->getDeliveryMode() . (2 === $c->getDeliveryMode() ? ' (persistent)' : ' (non-persistent)'), $c->getDeliveryMode()), $prefix . 'exchangeName' => $c->getExchangeName(), $prefix . 'isRedelivery' => $c->isRedelivery(), $prefix . 'contentType' => $c->getContentType(), $prefix . 'contentEncoding' => $c->getContentEncoding(), $prefix . 'type' => $c->getType(), $prefix . 'timestamp' => $c->getTimestamp(), $prefix . 'priority' => $c->getPriority(), $prefix . 'expiration' => $c->getExpiration(), $prefix . 'userId' => $c->getUserId(), $prefix . 'appId' => $c->getAppId(), $prefix . 'messageId' => $c->getMessageId(), $prefix . 'replyTo' => $c->getReplyTo(), $prefix . 'correlationId' => $c->getCorrelationId(), $prefix . 'headers' => $c->getHeaders());
     return $a;
 }
Пример #3
0
 /**
  * @param \AMQPEnvelope $envelope
  * @param \AMQPQueue $queue
  * @param string $m
  */
 public function publish($envelope, $queue, $m)
 {
     if ($m instanceof AmqpResp) {
         $m = Json::encode($m->getData());
     } elseif (is_object($m) || is_array($m)) {
         $m = Json::encode($m);
     }
     $chanel = $this->getChanel();
     // Точка доступа
     // Точка обмена
     $exchange = new \AMQPExchange($chanel);
     $exchange->setFlags(AMQP_AUTODELETE | AMQP_DURABLE);
     $attributes = array('correlation_id' => $envelope->getCorrelationId());
     $routingKey = $envelope->getReplyTo();
     if ($exchange->publish($m, $routingKey, AMQP_NOPARAM, $attributes)) {
         $queue->ack($envelope->getDeliveryTag());
     }
 }
Пример #4
0
 public function fromEnvelope(\AMQPEnvelope $envelope)
 {
     $this->setAppId($envelope->getAppId());
     $this->setBody($envelope->getBody());
     $this->setContentEncoding($envelope->getContentEncoding());
     $this->setContentType($envelope->getContentType());
     $this->setCorrelationId($envelope->getCorrelationId());
     $this->setDeliveryMode($envelope->getDeliveryMode());
     $this->setDeliveryTag($envelope->getDeliveryTag());
     $this->setExchangeName($envelope->getExchangeName());
     $this->setExpiration($envelope->getExpiration());
     $this->setHeaders($envelope->getHeaders());
     $this->setMessageId($envelope->getMessageId());
     $this->setPriority($envelope->getPriority());
     $this->setReplyTo($envelope->getReplyTo());
     $this->setRoutingKey($envelope->getRoutingKey());
     $this->setTimeStamp($envelope->getTimeStamp());
     $this->setType($envelope->getType());
     $this->setUserId($envelope->getUserId());
     $this->setRedelivery($envelope->isRedelivery());
     return $this;
 }
Пример #5
0
 /**
  * @param \AMQPEnvelope $envelope
  * @return string
  */
 public static function envelopeToString(\AMQPEnvelope $envelope)
 {
     $m = '';
     $m .= 'AppId: ' . $envelope->getAppId() . "\n";
     $m .= 'Body: ' . $envelope->getBody() . "\n";
     $m .= 'ContentEncoding: ' . $envelope->getContentEncoding() . "\n";
     $m .= 'ContentType: ' . $envelope->getContentType() . "\n";
     $m .= 'CorrelationId: ' . $envelope->getCorrelationId() . "\n";
     $m .= 'DeliveryTag: ' . $envelope->getDeliveryTag() . "\n";
     $m .= 'ExchangeName: ' . $envelope->getExchangeName() . "\n";
     $m .= 'Expiration: ' . $envelope->getExpiration() . "\n";
     $m .= 'Headers: ' . json_encode($envelope->getHeaders()) . "\n";
     $m .= 'MessageId: ' . $envelope->getMessageId() . "\n";
     $m .= 'Priority: ' . $envelope->getPriority() . "\n";
     $m .= 'ReplyTo: ' . $envelope->getReplyTo() . "\n";
     $m .= 'RoutingKey: ' . $envelope->getRoutingKey() . "\n";
     $m .= 'TimeStamp: ' . $envelope->getTimeStamp() . "\n";
     $m .= 'Type: ' . $envelope->getType() . "\n";
     $m .= 'UserId: ' . $envelope->getUserId() . "\n";
     $m .= 'isRedelivery: ' . $envelope->isRedelivery() . "\n";
     $m .= "\n";
     return $m;
 }
 function callback(AMQPEnvelope $message, AMQPQueue $q)
 {
     //say that message received
     $q->ack($message->getDeliveryTag());
 }
Пример #7
0
 /**
  * Convert AMQP message to internal message format
  *
  * @param \AMQPEnvelope $envelope
  *
  * @return BaseMessage
  */
 public static function convert(\AMQPEnvelope $envelope)
 {
     $message = new BaseMessage();
     $message->setPayload($envelope->getBody())->setDeliveryMode($envelope->getDeliveryMode())->setHeaders($envelope->getHeaders())->setProperties(['content_type' => $envelope->getContentType(), 'content_encoding' => $envelope->getContentEncoding(), 'app_id' => $envelope->getAppId(), 'correlation_id' => $envelope->getCorrelationId(), 'delivery_tag' => $envelope->getDeliveryTag(), 'message_id' => $envelope->getMessageId(), 'priority' => $envelope->getPriority(), 'reply_to' => $envelope->getReplyTo(), 'routing_key' => $envelope->getRoutingKey(), 'exchange_name' => $envelope->getExchangeName(), 'timestamp' => $envelope->getTimeStamp(), 'type' => $envelope->getType(), 'user_id' => $envelope->getUserId()]);
     return $message;
 }
 /**
  * @param \AMQPEnvelope $message
  * @throws \Exception
  */
 protected function processFailedSubscription(\AMQPEnvelope $message)
 {
     if (!$this->connection->isConnected()) {
         $this->connection->connect();
     }
     $attempt = $message->getHeader('redelivery_counter') ? $message->getHeader('redelivery_counter') : 1;
     if ($attempt < 3) {
         $headers = $message->getHeaders();
         $headers['redelivery_counter'] = ++$attempt;
         $attributes = array_merge($this->messageAttributes, ['content_type' => $message->getContentType(), 'headers' => $headers]);
         $this->getExchange()->publish($message->getBody(), $message->getRoutingKey(), AMQP_NOPARAM, $attributes);
     }
     $this->getQueue()->ack($message->getDeliveryTag());
 }
Пример #9
0
 /**
  * @param \AMQPEnvelope                    $message
  * @param MessageEncodeDecodeStrategy|null $decodeStrategy
  *
  * @return static
  * @throws \yii\base\InvalidConfigException
  */
 public static function createFromRaw(\AMQPEnvelope $message, $decodeStrategy = null)
 {
     return \Yii::createObject(['class' => static::class, 'body' => $message->getBody(), 'routingKey' => $message->getRoutingKey(), 'deliveryTag' => $message->getDeliveryTag(), 'deliveryMode' => $message->getDeliveryMode(), 'exchangeName' => $message->getExchangeName(), 'redelivery' => $message->isRedelivery(), 'contentType' => $message->getContentType(), 'contentEncoding' => $message->getContentEncoding(), 'type' => $message->getType(), 'timestamp' => $message->getTimeStamp(), 'priority' => $message->getPriority(), 'expiration' => $message->getExpiration(), 'userId' => $message->getUserId(), 'appId' => $message->getAppId(), 'messageId' => $message->getMessageId(), 'replyTo' => $message->getReplyTo(), 'correlationId' => $message->getCorrelationId(), 'headers' => $message->getHeaders(), 'decodeStrategy' => $decodeStrategy]);
 }
Пример #10
0
 /**
  * Implements all the needed behaviors for processing messages in case of errors
  * This method will nack all the provious messages or ack all the previous messages in the case of a failed message
  * The results can be surprising.
  *
  * @param AMQPEnvelope $message The message to be processed
  * @param bool|int     $result  The reply from the processor
  *
  * @return void
  */
 protected function processError(\AMQPEnvelope $message, $result)
 {
     if (isset($this->configuration['onProcessError'])) {
         $stopOnError = $this->configuration['onProcessError'];
         // set up a sensible default
         $action = 'error';
         switch ($result) {
             case Processor::CRIT_INTERNAL_SERVER_ERROR:
                 if (isset($stopOnError['crit_internal_server_error'])) {
                     $action = $stopOnError['crit_internal_server_error'];
                 }
                 break;
             case Processor::CRIT_NOT_IMPLEMENTED:
                 if (isset($stopOnError['crit_not_implemented'])) {
                     $action = $stopOnError['crit_not_implemented'];
                 }
                 break;
             case Processor::ERR_BAD_REQUEST:
                 if (isset($stopOnError['err_bad_request'])) {
                     $action = $stopOnError['err_bad_request'];
                 }
                 break;
             case Processor::ERR_NOT_FOUND:
                 if (isset($stopOnError['err_not_found'])) {
                     $action = $stopOnError['err_not_found'];
                 }
                 break;
         }
         switch ($action) {
             case 'error':
                 $this->queue->nack($message->getDeliveryTag(), AMQP_MULTIPLE);
                 $this->nackCounter = 0;
                 break;
             case 'requeue':
                 $this->queue->nack($message->getDeliveryTag(), AMQP_REQUEUE | AMQP_MULTIPLE);
                 $this->nackCounter = 0;
                 break;
             case 'stop':
                 $this->queue->nack($message->getDeliveryTag(), AMQP_MULTIPLE);
                 exit(1);
             case 'continue':
             default:
                 $this->queue->ack($message->getDeliveryTag(), AMQP_MULTIPLE);
                 // reset the nack counter
                 $this->nackCounter = 0;
                 break;
         }
     } else {
         $this->queue->nack($message->getDeliveryTag());
     }
 }
Пример #11
0
 /**
  * @inheritdoc
  */
 public function getDeliveryTag()
 {
     return $this->delegate->getDeliveryTag();
 }
 /**
  * @param AMQPEnvelope $incoming
  * @return AMQPIncomingMessage
  */
 public static function convert(AMQPEnvelope $incoming)
 {
     $data = array(AMQPIncomingMessage::APP_ID => $incoming->getAppId(), AMQPIncomingMessage::BODY => $incoming->getBody(), AMQPIncomingMessage::CONTENT_ENCODING => $incoming->getContentEncoding(), AMQPIncomingMessage::CONTENT_TYPE => $incoming->getContentType(), AMQPIncomingMessage::CORRELATION_ID => $incoming->getCorrelationId(), AMQPIncomingMessage::DELIVERY_TAG => $incoming->getDeliveryTag(), AMQPIncomingMessage::DELIVERY_MODE => $incoming->getDeliveryMode(), AMQPIncomingMessage::EXCHANGE => $incoming->getExchangeName(), AMQPIncomingMessage::EXPIRATION => $incoming->getExpiration(), AMQPIncomingMessage::MESSAGE_ID => $incoming->getMessageId(), AMQPIncomingMessage::PRIORITY => $incoming->getPriority(), AMQPIncomingMessage::REPLY_TO => $incoming->getReplyTo(), AMQPIncomingMessage::REDELIVERED => $incoming->isRedelivery(), AMQPIncomingMessage::PRIORITY => $incoming->getPriority(), AMQPIncomingMessage::ROUTING_KEY => $incoming->getRoutingKey(), AMQPIncomingMessage::TIMESTAMP => $incoming->getTimeStamp(), AMQPIncomingMessage::TYPE => $incoming->getType(), AMQPIncomingMessage::USER_ID => $incoming->getUserId());
     return AMQPIncomingMessage::spawn($data);
 }
Пример #13
0
 /**
  * Nacks the message
  *
  * @param AMQPEnvelope $envelope
  *
  * @return void
  */
 public function nack(AMQPEnvelope $envelope)
 {
     $this->_queues[$this->_consumerQueue]->nack($envelope->getDeliveryTag());
 }