Programming Language PHP
Namespace Oro\Component\MessageQueue\Consumption
Class Context
Method/Function setStatus
Total Examples 1
1 code examples of PHP Oro\Component\MessageQueue\Consumption\Context::setStatus extracted from open source projects
/**
* @inheritdoc
*/
public function onPreReceived(Context $context)
{
$message = $context->getMessage();
if (!$message->isRedelivered()) {
return;
}
if ($context->getStatus()) {
// There is no sense in proceeding as message status is already known.
$context->getLogger()->debug(
'Skipping extension as message status is already set.',
['messageId' => $message->getMessageId(), 'status' => $context->getStatus()]
);
return;
}
$properties = $message->getProperties();
if (!isset($properties[self::PROPERTY_REDELIVER_COUNT])) {
$properties[self::PROPERTY_REDELIVER_COUNT] = 1;
} else {
$properties[self::PROPERTY_REDELIVER_COUNT]++;
}
$delayedMessage = new Message();
$delayedMessage->setBody($message->getBody());
$delayedMessage->setHeaders($message->getHeaders());
$delayedMessage->setProperties($properties);
$delayedMessage->setDelay($this->delay);
$delayedMessage->setMessageId($message->getMessageId());
$queue = $context->getSession()->createQueue($context->getQueueName());
$this->driver->send($queue, $delayedMessage);
$context->getLogger()->debug('Send delayed message');
$context->setStatus(MessageProcessorInterface::REJECT);
$context->getLogger()->debug('Reject redelivered original message by setting reject status to context.');
}