如何通过q​​uickfixj发送时更快地处理修复消息

时间:2011-11-15 11:47:18

标签: java quickfix

我在QuickfixJ中遇到处理速度问题。我在this question读到它可以处理300消息/秒。我还在其他地方看到了成千上万的报道。我的Quickfix会话代码接收消息列表并通过Sesssion.SendToTarget()逐个发送;

我发送消息的循环可能会减慢我的速度,但我想知道是否有办法发送消息列表或加快发送这些消息的过程。也许有可能因为我正在登录屏幕,这使我放慢了速度。我可以从无头运行并只记录到文件日志中受益吗?

3 个答案:

答案 0 :(得分:4)

我已经看到QuickFIX / J处理消息的速度是每秒数千。但是,您将无法在单个FIX会话中获得该性能。我正在描述的场景涉及多个会话。这是显着的原因是由于FIX序列号,FIX协议在每个会话中本质上是顺序的。如果您有一个会话,这实际上意味着您有一个线程处理消息。通过多个会话,引擎可以利用多个线程和处理器。

一般来说,文件I / O是主要的开销。寻找优化文件系统访问的方法。如果您运行没有日志记录的引擎和MemoryStore,您会发现它非常快。我不会将它用于极端低延迟的应用程序,但它并不坏。

答案 1 :(得分:1)

登录屏幕会让您慢慢放松。通过在屏幕上登录,我每秒制作30-40个消息,并且白色登录我的数量超过400.如此简单,不要在屏幕上显示任何内容。 此过程中缓慢的部分也是Acceptor的答案。 Initiator设法每秒发送超过2000条消息,但Acceptor的响应正在减慢整个过程。

答案 2 :(得分:0)

您是否在循环中创建每条消息,因为这可能是您的开销?这可以异步完成,然后在完成时发送消息。如果要确保最小化发送时间,则异步记录将消除额外的开销,只需确保将任何时间数据发送到日志记录线程,以便在写入日志时准确无误。