Here is one approach you could use. Let's stick with the idea that
you're using routing keys for the chat room name. Furthermore each
client publishes messages with a "user" header set to the user name.
So you have some top level exchange (presumably direct or topic) for
chat room routing. When a new user comes on line, rather than just
declaring a queue and binding to that exchange, they:
* Declare a fanout exchange.
* Declare a headers exchange and bind that to the top level exchange.
The headers exchange should have its alternate-exchange set to point to
the fanout exchange.
* Declare a "junk" queue, with message TTL 0, and bind this to their
headers exchange with arguments ["user": <their username>].
* Declare a "message" queue and bind this to the fanout exchange.
So when they publish a message it goes to the headers exchange. This
routes it to the junk queue where it expires immediately.
When someone else publishes a message it goes to the headers exchange.
This can't route it, which makes it go to the alternate fanout exchange.
This then routes it to the message queue.
The key point is the use of alternate-exchange for negation.
It's a tiny bit fiddly though, so an alternate approach would be to
write your own exchange type.
On 14/12/11 14:18, bill_martin at freenet.de wrote:
I am writing an application which allows users to communicate with each
other via RabbitMQ.
Each user-application contains a producer and a receiver to publish or
receive messages to/from a direct exchange. Each user can bind to a
Imagine two users (UserA and UserB). UserA binds to "chatRoom1" and
UserB binds to "chatRoom1".
If UserA publishes a message in "chatRoom1" the consumer of the
user-application from UserB and the consumer of the user-application
from UserA gets the message.
I want to prevent that a user gets his own messages to reduce network
Is it possible?
Thanks in advance for your help!
*E-Mail ist da wo du bist!* Jetzt mit freenetMail ganz bequem auch
unterwegs E-Mails verschicken.
Am besten gleich informieren unterhttp://mail.freenet.de/mobile-email/index.html
rabbitmq-discuss mailing list
rabbitmq-discuss at lists.rabbitmq.comhttps://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss