[rabbitmq-discuss] using ttl and dead-letter-exchange to retry after a delay, in PHP

Simon MacMullen simon at rabbitmq.com
Wed Oct 2 10:10:35 BST 2013

On 01/10/13 12:39, Dave Alan Caruana wrote:
>                         "x-dead-letter-exchange" => array("S",
> $this->channelname),
>                         "x-message-ttl" => array("I", 5000),
>                         "x-expires" => array("I", 6000)

> $msg -> is the message I want sent with a delay
> $this->channelname would be the channel I want it to go to after the delay
> 'errorXchange' is the dead queue with the ttl & no consumer.

Well, the x-dead-letter-exchange argument takes... an exchange, not a 
channel name. You need to declare another exchange to dead letter 
messages to, then a queue to consume the dead-lettered messages from, 
bind the two, then consume from that.

I'm also not sure I'd call a queue "errorXchange", might be confusing.

Finally, you have set "expires" on your queue - this will cause it to 
delete itself after 6 seconds of inactivity. I doubt you want that.

> I haven't understood how to debug rabbitmq or what is going wrong, and
> there is precious little documentation!

If you haven't read the tutorials I would do so - 
http://www.rabbitmq.com/getstarted.html. And of course see also 
http://www.rabbitmq.com/ttl.html and http://www.rabbitmq.com/dlx.html

Cheers, Simon

Simon MacMullen
RabbitMQ, Pivotal

More information about the rabbitmq-discuss mailing list