[rabbitmq-discuss] Keeping track of exchanges -- Any Advice

MarcusR marcus_rubeus at hotmail.com
Mon Jan 30 06:31:34 GMT 2012


Hello Simon, thanks for the response.

I am not really sure to be honest. I am not very familiar with message
brokers and their performance characteristics. I suppose I could have
a topic exchange and then bind queues to various topics... Such as
have a queue for user1.queu1, user2.queue1, user3.queue1, etc

My question is how expensive is routing? Also, regarding the routing,
is it more performant to have one master topic exchange for all the
users or to distribute users across multiple topic exchanges or does
it not matter?

I assume rabbitmq first looks up the exchange and then goes through
each queue to see if there is a match for routing. If this is the
case, I imagine it would be more performant to create a thousand such
topic exchanges and divide all the users across them as opposed to one
topic exchange for all users.


In the end, I plan to run several rabbitmq nodes with a bucket of
users assigned to each rabbit node. Assigning each user to a node
based on a hash. Is this best practice for scaling rabbitmq for this
type of scenerio? Currently rabbitmq is the bottle neck in my
application benchmarks so this was my plan to scale it. Please correct
me if there is a better practice.


On Jan 18, 5:38 am, Simon MacMullen <si... at rabbitmq.com> wrote:
> First of all, can you get the routing you need without every user
> requiring their own exchange? What routing do you need to do?
>
> Cheers, Simon
>
> On 17/01/12 20:27,MarcusRwrote:
>
>
>
>
>
>
>
>
>
> > I have a  setup where I need to use a LOT of unique exchanges /
> > queues.
>
> > To explain. Essentially, think that every "user" has their own
> > exchange and then 3 queues on that exchange. These users may be active
> > for a few minutes to days. The time they exist is unknown (depends on
> > the user). There are hundreds of thousands of users at a time.
> > Periodically, another user may send a message to a user. However, that
> > user may or may not be active (have an exchange / queue associated
> > with it).
>
> > The x-expires feature is great for the queue. If a user is not active
> > in 15 minutes, then all their queues can be deleted. If I set
> > auto_delete on exchanges to be true, it is my understanding that that
> > exchanges will also be deleted once the queues are. Thats great too.
>
> > The problem is when user A sends a message to user B and user B has
> > had their exchange deleted. This will create an error. Ideally, what
> > would happen is rabbitmq would just ignore the message. If the user is
> > not active, then it does not matter if the message just goes to /dev/
> > null.
>
> > Is there a way around this or a way to get the desired behavior? If
> > not, what strategies do people use to determine in real time what
> > exchanges are active or not or what exchanges need to be deleted or
> > not?
> > _______________________________________________
> > rabbitmq-discuss mailing list
> > rabbitmq-disc... at lists.rabbitmq.com
> >https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
> --
> Simon MacMullen
> RabbitMQ, VMware
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-disc... at lists.rabbitmq.comhttps://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss


More information about the rabbitmq-discuss mailing list