Для отложенной доставки есть ещё один вариант, который работает на RabbitMQ даже без плагинов. Изначальное сообщение (с нужным TTL) отправляется в очередь на которую нет консюмеров, и когда заканчивается TTL, RabbitMQ перекладывает это сообщение в другой exchange, указанный как dead letter в метаданных сообщения. На этом принципе часто делается delayed retry для сообщений, которые не удалось обработать с первого раза.
Подробнее про dead letter можно почитать тут: https://www.rabbitmq.com/dlx.html
А тут есть пример кода: http://stackoverflow.com/a/14844559