[rabbitmq-discuss] Is internal delivery (between exchanges) guaranteed?

Simon MacMullen simon at rabbitmq.com
Wed Nov 21 11:08:49 GMT 2012


That's a logical way to look at the Rabbit internals. But it's not how 
things are built in terms of Erlang processes.

In terms of Erlang processes, a message first goes to the reader (read 
side of a connection) then to a channel, then to queues. Exchanges are 
just routing logic which runs in the channel process.

Therefore messages can't exist "in" exchanges. But they can and do exist 
in the reader and channel processes before they get to the queues.

There are lots of ways (primarily node failure) that messages could get 
as far as reader or channel, but be lost before they reach the queue. IF 
you use tx or confirms, then you know that when a message has been 
confirmed / tx.commit finishes it has made it as far as the queue.

Cheers, Simon

On 21/11/12 11:01, Michał Michalak wrote:
> Assuming I have single host RabbitMQ server and settings like below:
>
>                    .--------------.
>                 .->| EX fanout    |
> .-----------.--'  | "monitoring" |
> | EX fanout |     '--------------'      .----.
> | "common"  |--.  .-----------.      .->| Q1 |
> '-----------'  '->| EX direct |--q1--'  '----'
>                    | "queues"  |--q2--.  .----.
>                    '-----------'      '->| Q2 |
>                                          '----'
>
> When I send message to exchange "common" with routing key "q1" - is it
> guaranteed that message reach Q1 queue? I want to make sure such message
> wont get stuck somewhere between exchanges or between exchange and queue.
>
>
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>



More information about the rabbitmq-discuss mailing list