Quote from nitro:
I just claim that mixing high frequency trading and this stuff can be hazardous to your pocket book.
Of course is has value in general.
OK fair enough. If the "high" in "high frequency" is high enough to warrant spending significant effort performance tuning and optimizing your trading code (in assembly language of course
), then throwing a non-optimized third-party message middleware into the mix doesn't make sense.It depends on the specific non-functional requirements of your trading system e.g. latency, throughput, reliability. You can have "good enough" today with an off-the-shelf messaging middleware or "much faster" tomorrow with a roll your own.
Opportunity cost aside, your trading system simply might not make money with a "good enough" solution because it's edge is dependent on not having the latency introduced by the middleware. I suspect this may be your situation.
However, there are several use cases where the message middleware is still useful even in the highest high-frequency trading systems such as your recent use case of distributed logging where the logging doesn't necessarily have to happen NOW.
Even when you have to throw out MQs that have some inherent latency due to the fundamental architecture where messages from producer to consumer have to travel via an intermediary server/broker (i.e. all JMS providers that I know of) there are still other options that I'd personally look at before "rolling my own".
Specifically, I might look at OMG's Data Distribution Service (DDS) for real time systems initiative:
http://www.omg.org/docs/formal/05-12-04
Some open source implementations:
OpenDDS (http://www.opendds.org)
OpenSplice (http://www.opensplice.org)
A releveant webcast from the commercial makers of opensplice:
http://www.opensplice.com/section-item.asp?id=816
I personally, haven't reached a point where I need to look at this technology in anything more than a cursory way. Your situation may be different.