[rabbitmq-discuss] What is an Exchange?

Alexandru Scvorţov alexandru at rabbitmq.com
Mon Jan 31 10:25:44 GMT 2011


Hi Jeff,

> Being new to enterprise mq's, rabbit in particular, is there a definition
> for what an exchange does/is?  The tutorial talks about how use use an
> exchange, and the 3 different types of exchanges but is there more
> conceptually to an exchange than functioning as a logical abstraction for
> segmenting queues and routing per virtual host and/or server?

An exchange is a message router.  Clients publish messages to exchanges,
and the exchanges route the messages to other exchanges or to queues.
Exchanges do not modify messages and do not store messages.

> From what I've read so far, it doesn't appear to be possible for an exchange
> to span servers, true?

RabbitMQ nodes can be clustered together to form one large "logical"
broker.  I.e. clients connecting to any node in the cluster will see the
same broker.  So, a client can declare an exchange on one node, another
can publish to the exchange on a different node and the exchange may
route messages to queues declared on yet another node.

> Where do vhosts fit in this model?    server -> vhost -> exchange -> queue?
>  Are they just another logical abstraction that sits on top of exchanges?
>  Is segmenting security the main/only reason?

Exchanges and queues are declared in the context of vhosts.  So, you can
have two different exchanges with the same name, but in different
vhosts.  It's just a convenient way to group exchanges, queues and
bindings.

> Links are always welcome, I've attempted to search for this information but
> get pages of code examples for results.  So now I'm asking.

You already know about:
  http://www.rabbitmq.com/documentation.html

The spec is the definitive guide, and the tutorial and the Java Client API
Guide give a hands-on introduction to RabbitMQ.

Hope this helps.

Cheers,
Alex


On Sun, Jan 30, 2011 at 06:42:47PM -0600, Jeff Hinrichs wrote:
> Being new to enterprise mq's, rabbit in particular, is there a definition
> for what an exchange does/is?  The tutorial talks about how use use an
> exchange, and the 3 different types of exchanges but is there more
> conceptually to an exchange than functioning as a logical abstraction for
> segmenting queues and routing per virtual host and/or server?
> 
> From what I've read so far, it doesn't appear to be possible for an exchange
> to span servers, true?
> 
> Where do vhosts fit in this model?    server -> vhost -> exchange -> queue?
>  Are they just another logical abstraction that sits on top of exchanges?
>  Is segmenting security the main/only reason?
> 
> Links are always welcome, I've attempted to search for this information but
> get pages of code examples for results.  So now I'm asking.
> 
> Best,
> 
> 
> -Jeff

> _______________________________________________
> 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