[rabbitmq-discuss] debugging an unroutable message

Daniel Risacher magnus at alum.mit.edu
Mon Mar 29 09:03:22 BST 2010

Here's my use case:  controlling (1 or more) daemons via multiple user
interfaces, e.g. web, command-line, etc.

1. At startup, the daemon(s) declares a queue bound to a fanout
exchange ('brokaw') to listen for broadcast messages from clients.

2. When run, the command-line client creates a queue to listen for
replies, and binds it to amq.direct with a routing key equal to the
queue name (which I let the server generate).

3. Command-line client sends a 'PING' message to the 'brokaw'
exchange, with reply-to set to the name of its reply queue.

4. Daemon gets the 'PING' message

4.5 Daemon responds with a 'PONG' to amq.direct with the routing_key
set to the reply-to field.

5. Command-line client waits around for eh, 500ms for a response,
dumps result to console and exits.

(All coded in perl, with POE::Component::Client::AMQP.)

Here's the bug symptom- it strictly alternates between working and not
working.  Works the first time, not the second, etc.   When it doesn't
work, the daemon gets the PING, but the PONG is returned as

Here's the dump of the return frame:
--- !!perl/hash:Net::AMQP::Frame::Method
channel: 1
method_frame: !!perl/hash:Net::AMQP::Protocol::Basic::Return
  exchange: amq.direct
  reply_code: 312
  reply_text: unroutable
  routing_key: amq.gen-HIi2IrPHZ8QST0+FvDDRCA==
payload: ''
type_id: 1

So two questions:

First, is my architecture screwed up? (Esp. am I misusing amq.direct?)
Second, how can I debug this ?  How do I tell *why* it returns unroutable?

More information about the rabbitmq-discuss mailing list