Open analyticbastard opened 10 years ago
These kind of messages should be sent using a multicast library to minimize network usage.
On the other hand, there might be premium users (market makers?) who need prioritary and accurate information. Should this be implemented separately?
Multicast libraries which are open source and applicable to our case are rare. A clojure wrapper around emcaster, which implements the Pragmatic General Multicast (PGM) protocol, might be the solution to our problems.
Or perhaps a wrapper around JavaPGM is a better option, since it seems more modern.
I guess the final answer to this question is JGroups: http://www.jgroups.org/
It seems that there have been some developments lately: ZeroMQ http://zeromq.org/
Edit: The most voted answer seems to support this http://stackoverflow.com/questions/731233/activemq-or-rabbitmq-or-zeromq-or
We are definitely going the ZeroMQ way. See webpage for supporting evidence of performance.
Attention, ZeroMQ is a native library. There is a (pure) Java implementation, JeroMQ, and a JNI interface library, zjmq. JeroMQ works out of the box and is the default. For best performance, select zjmq. See Extras directory Readme.md.
I'm probably a bit late, but I would like to mention NASDAQ MoldUDP64 1.00 as one alternative. MoldUDP64's benefit compared to ZeroMQ is that the wire protocol is simple and open. Thus, market participants don't have to depend on the ZeroMQ library for connectivity.
I have written Nassau, a high-performance implementation of MoldUDP64 for the JVM.
Thanks! At the moment I am inactive in this project, and I realized that a lot of the core needs to be rebuilt using Meldown or similar. Your project Nassau certainly looks interesting.
The connectors should have a mechanism to convey the last price and several levels of bid and ask, as well as bid and ask distributions, so that clients can know of this information.