[rabbitmq-discuss] custom exchange

Simon MacMullen simon at rabbitmq.com
Thu May 31 10:56:31 BST 2012

On 31/05/12 07:34, Sujan Dutta wrote:
> Now my requirement is that - Add a custom header to the every messages
> which is delivered through the custom exchange.

I'm afraid there isn't a general API for that.

The problem is that exchanges are just for routing - in a complex 
exchange-to-exchange scenario where a message gets routed like:

  /--> X2 --\
  |          v
  X1         X4 --> Q
  |          ^
  \--> X3 --/

only one copy of the message ends up in Q - so did it pass through X2 or 
X3? Which one has the right to modify it?

Having said that, if you know that you *won't* be using such complex 
routing, you could do this by:

route(X, Delivery) ->
     case custom_header_exists(Delivery) of
         true  -> route_as_normal(Delivery);
         false -> rabbit_basic:publish(X, add_custom_header(Delivery)),

i.e. if the header needs to be added, don't route it at all, but instead 
republish it to yourself with the header added.

Cheers, Simon

Simon MacMullen
RabbitMQ, VMware

More information about the rabbitmq-discuss mailing list