Skip to content

Instantly share code, notes, and snippets.

@makasim
Created April 12, 2017 07:23
Show Gist options
  • Save makasim/14e7fe9fe1c8bf182a075d308ca6a782 to your computer and use it in GitHub Desktop.
Save makasim/14e7fe9fe1c8bf182a075d308ca6a782 to your computer and use it in GitHub Desktop.
<?php
/**
* @var \Enqueue\AmqpExt\AmqpMessage $message
* @var \Enqueue\AmqpExt\AmqpContext $context
* @var \Enqueue\AmqpExt\AmqpConsumer $consumer
*/
if ($message->isRedelivered()) {
$queue = $context->createQueue('a_queue');
$delayTopic = $context->createTopic('a_retry_exchange');
$delayTopic->setRoutingKey('a_queue');
$delayTopic->setType('x-delayed-message');
$delayTopic->addFlag(AMQP_DURABLE);
$delayTopic->setArguments([
'x-delayed-type' => 'direct',
]);
$context->declareTopic($delayTopic);
$context->bind($delayTopic, $queue);
$retryMessage = $context->createMessage(
$message->getBody(),
$message->getProperties(),
$message->getHeaders()
);
$retryMessage->setProperty('x-delay', '5000'));
$context->createProducer()->send($delayTopic, $retryMessage);
$consumer->acknowledge($message);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment