Question

I'm currently in the middle of developing a webapplication which needs a websocket connection to receive notifications of events from the server.

The clients are separated in groups and all the clients in a group must receive the same event notifications.

I thought that ActiveMQ could probably support this model, using different queues for each group of clients. It would also be relatively easy to push events to ActiveMQ using stomp, and then use stomp-over-websockets for the clients.

The problem I see is that messages should not be consumed by only one client, but distributed to all the clients connected to the queue.

Also the queue should not be stored. If a client is not connected when the event is generated, then it will never receive it.

I don't know ActiveMQ that much, so I'm not sure if this is possible or if there is another easy solution that could be used instead of writing my own message server.

Thanks

Was it helpful?

Solution

ActiveMQ 5.4.1 supports WebSockets natively (just like Stomp, JMS, etc.). There is the concept of queues (you mentioned these), but also of topics.

In a queue, a single message will be received by exactly one consumer, in a topic it goes to all the subscribers. See: http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html

There are some Stomp-WebSocket JS libraries floating around. Kaazing has a bundle that includes ActiveMQ and supports JMS API/Stomp protocol over WebSockets with support for older browsers, different client technologies, and Cross-Site security.

OTHER TIPS

Look at Pusher, otherwise you'll need something that supports topic based pub/sub. You could look at Redis or RabbitMQ

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top