I am looking to create an application with many data sources, each of which places events on my system. Events have a well-defined data structure and can be encoded using JSON or XML.
I would like to be able to guarantee the persistence of events, as well as the fact that events are used as part of the publish / subscribe bus with several subscribers available for each event.
For a database, accessibility is very important, even if it scales to multiple nodes, and partition portability is important, so I can scale the number of places that my events can store. A possible sequence is enough for me.
I thought of using a JMS communications bus for messaging (like Mule ) or a communications bus for corporate AMQP messaging (like RabbitMQ or ZeroMQ ).
But for my application, it seems that if I could set up a publishing subscription system using CouchDB or something similar, it would solve my problem without the need to integrate enterprise messaging and persistent storage.
What will work better, CouchDB + scaling + loadbalancing + some PubSub engine or an explicit PubSub messaging system with an ultimately attached, consistent, accessible, partition-compatible storage? Which one is easier to configure, administer and manage? Which solution will have high throughput for a given cost? Why?
In addition, are there any other questions that I must ask before choosing my technology? (BTW, Java are both server and client languages).
source share