Re: How does QuickFix/J handle rate throughput

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Re: How does QuickFix/J handle rate throughput

Tod Harter
QuickFIX/J Documentation:
QuickFIX/J Support:

Its not a matter of what QF/J does, FIX itself doesn't have any sort of 'rate limiter' mechanism. The transport layer simply accepts every message that is thrown at it, up to the point where either the network stack or the application layer can't handle the load anymore, at which point something will break (Linux will buffer TCP messages up to a certain point, and FIX messages WILL stack up at the queue at the QF/J level).

Remember, the session layer persists all messages BEFORE they get passed on to the application. The best policy is for your application layer to do minimal processing, such as perhaps committing the message to a JMS queue for handling by an MDB or something like that.

What really happens, commonly, is that the workload becomes so high that the heartbeat thread gets starved of CPU time and after a couple minutes your connection fails. This seems to happen before anything else, in general. Depending on your system and how you've tuned things you might get other behaviors potentially, like out of memory. Once stacked up FIX messages force Java to do a major garbage collection things pretty much die hard right then and there...

On Thu, Nov 12, 2015 at 8:23 AM, <[hidden email]> wrote:
Message: 1
Date: Mon, 2 Nov 2015 10:57:34 -0500
From: "Rupak" <[hidden email]>
Subject: [Quickfixj-users] How does QuickFix/J handle rate throughput
To: <[hidden email]>
Message-ID: <001b01d11587$3133ed70$939bc850$>
Content-Type: text/plain; charset="us-ascii"


If my FIX consumer application that implements the following method is slow
in processing the message in the method's functionality, does the engine
starts buffering the incoming messages that might be coming at a faster rate
or is there an auto throughput negotiation between the two parties so that
the sender slows down the traffic. I am using QuickFix/J 1.6.0

public void onMessage(MarketDataSnapshotFullRefresh message, SessionID



“Men occasionally stumble over the truth, but most of them pick themselves up and hurry off as if nothing had happened.” -Winston Churchill

"Sometimes I wonder whether the world is being run by smart people who are putting us on, or by imbeciles who really mean it." - Mark Twain


Quickfixj-users mailing list
[hidden email]