skip to content
Alvin Lucillo

Multiple bindings with same exchange

/ 2 min read

An exchange can be associated to multiple bindings. The key here is that we know the destination of a message based on the routing key of an exchange. In the example below, messages will reach either greetingsv2 or greetingsv3 if the routing key is events.hi or events.hello respectively.

  rabbitmq docker exec -it rabbitmq rabbitmqadmin get messages --queue=greetingsv2 --ack-mode=ack_requeue_true
┌───────────────┬─────────────┬──────────┬─────────────┬───────────────┬────────────┬─────────┬──────────────────┐
 payload_bytes redelivered exchange routing_key message_count properties payload payload_encoding
└───────────────┴─────────────┴──────────┴─────────────┴───────────────┴────────────┴─────────┴──────────────────┘
  rabbitmq docker exec -it rabbitmq rabbitmqadmin get messages --queue=greetingsv3 --ack-mode=ack_requeue_true
┌───────────────┬─────────────┬──────────┬─────────────┬───────────────┬────────────┬─────────┬──────────────────┐
 payload_bytes redelivered exchange routing_key message_count properties payload payload_encoding
└───────────────┴─────────────┴──────────┴─────────────┴───────────────┴────────────┴─────────┴──────────────────┘
  rabbitmq docker exec -it rabbitmq rabbitmqadmin declare binding --source=events --destination=greetingsv2 --routing-key=events.hello --destination-type=queue
  rabbitmq docker exec -it rabbitmq rabbitmqadmin declare binding --source=events --destination=greetingsv3 --routing-key=events.hi --destination-type=queue;
  rabbitmq docker exec -it rabbitmq rabbitmqadmin publish message --routing-key=events.hello --payload=henlo --exchange=events 
Message published and routed successfully
  rabbitmq docker exec -it rabbitmq rabbitmqadmin get messages --queue=greetingsv2 --ack-mode=ack_requeue_true 
┌───────────────┬─────────────┬──────────┬──────────────┬───────────────┬────────────┬─────────┬──────────────────┐
 payload_bytes redelivered exchange routing_key message_count properties payload payload_encoding
├───────────────┼─────────────┼──────────┼──────────────┼───────────────┼────────────┼─────────┼──────────────────┤
 5 false events events.hello 0 henlo string
└───────────────┴─────────────┴──────────┴──────────────┴───────────────┴────────────┴─────────┴──────────────────┘
  rabbitmq docker exec -it rabbitmq rabbitmqadmin get messages --queue=greetingsv3 --ack-mode=ack_requeue_true 
┌───────────────┬─────────────┬──────────┬─────────────┬───────────────┬────────────┬─────────┬──────────────────┐
 payload_bytes redelivered exchange routing_key message_count properties payload payload_encoding
└───────────────┴─────────────┴──────────┴─────────────┴───────────────┴────────────┴─────────┴──────────────────┘
  rabbitmq docker exec -it rabbitmq rabbitmqadmin publish message --routing-key=events.hi --payload=hiya --exchange=events
Message published and routed successfully
  rabbitmq docker exec -it rabbitmq rabbitmqadmin get messages --queue=greetingsv2 --ack-mode=ack_requeue_true 
┌───────────────┬─────────────┬──────────┬──────────────┬───────────────┬────────────┬─────────┬──────────────────┐
 payload_bytes redelivered exchange routing_key message_count properties payload payload_encoding
├───────────────┼─────────────┼──────────┼──────────────┼───────────────┼────────────┼─────────┼──────────────────┤
 5 true events events.hello 0 henlo string
└───────────────┴─────────────┴──────────┴──────────────┴───────────────┴────────────┴─────────┴──────────────────┘
  rabbitmq docker exec -it rabbitmq rabbitmqadmin get messages --queue=greetingsv3 --ack-mode=ack_requeue_true 
┌───────────────┬─────────────┬──────────┬─────────────┬───────────────┬────────────┬─────────┬──────────────────┐
 payload_bytes redelivered exchange routing_key message_count properties payload payload_encoding
├───────────────┼─────────────┼──────────┼─────────────┼───────────────┼────────────┼─────────┼──────────────────┤
 4 false events events.hi 0 hiya string
└───────────────┴─────────────┴──────────┴─────────────┴───────────────┴────────────┴─────────┴──────────────────┘