[rabbitmq-discuss] Authenticated push message service using RabbitMQ Web STOMP plugin?

joshua__lim joshua__lim at hotmail.com
Thu Aug 1 05:17:12 BST 2013

I'm trying to study the feasibility of using RabbitMQ + Web STOMP plugin to
create a peer to peer push message service for up to 10,000 connected
JavaScript clients with the following features:

- Authenticated Peer to peer
- Delivery/Read Confirmation
- Persistent

XMPP has features that can meet my requirement, so I tested BOSH (XMPP) +
Strophe JS client using Prosody and Openfire, but encountered a limitation
on the number of connected clients.  The Erlang based Ejabberd is suppose to
scale better but I'm a novice when it comes to Linux.

If I were to use RabbitMQ, I'll need to figure out:

1. Whether the Web STOMP plugin can handle 10,000 concurrent connections.

2. Whether it is feasible to create 20,000 queues (2 queues for each
client).  I've tried Exchanges but they are not persistent from my tests.

3. How to authenticate each JavaScript client and to ensure message
confidentiality so that clients can only bind to queues that they have the

I've seen several others discussion in this issue and it appears that this
might be a bit tricky since queues are not password protected.  Is it
possible to make a queue exclusive to a user? I read somewhere that there is
some differences between queues and exchanges with respect to user right.

If there are no other methods, I thought I could create a randomly generated
queue id that is unique to that client and a lookup table on the server end
to match queueid with username.  But one problem with this method that I can
think of is a rogue client can generate tens of thousands of queues and
cause the server to crash.

4. Detect online presence for clients - similar to XMPP.

5. Whether it is possible to capture ack confirmations sent by the receiving
client.  Or do I need to create and send a delivery receipt confirmation
message back to the sender client?

I would greatly appreciate any thoughts and references that is related to
what I'm trying to do.  Thanks.

View this message in context: http://rabbitmq.1065348.n5.nabble.com/Authenticated-push-message-service-using-RabbitMQ-Web-STOMP-plugin-tp28530.html
Sent from the RabbitMQ mailing list archive at Nabble.com.

More information about the rabbitmq-discuss mailing list