QuickFIX / J的消息传递合同是什么?我可以保证订单交付吗?

问题描述

我刚开始使用QuickFIX / J。我对他们的文档感到困惑的一件事是,通过FIX协议的QuickFIX实现确切地确保了消息传递合同是什么?

尤其是,我知道FIX具有基于序列号的内置机制,实现可以利用该机制来处理乱序,丢失或重复的消息。但是QuickFIX / J是否已经内置了功能?作为使用QuickFIX / J与修订引擎进行通信的应用程序,我可以假设:

  1. 从QuickFIX / J传递到我的应用程序的消息总是井井有条。

  2. 没有丢失的消息(QuickFIX / J将自动处理 重新请求)

  3. 没有重复的消息(QuickFIX / J可以 查看到目前为止收到的序列号并过滤掉 重复)

  4. 如果远程修复引擎崩溃,我将在引擎返回时自动重新连接上一个已知的序列号

  5. 如果我的应用崩溃了,重启后是否可以从先前的已知序列号自动恢复会话? (例如,是否有任何现成的序列号持久性机制?)

解决方法

QuickFIX / J实现了FIX会话协议,因此它可以为您处理所有会话级内容(连接,序列号等)。

  1. 是的,但可能有重复项,请参阅3。
  2. 是的。
  3. 不,实际上QFJ仍会将可能的重复项转发到您的应用程序,因为您可能仍想处理这些重复项。您需要根据43/PossDupFlag自行过滤它们。
  4. 是的。
  5. 是的。 QFJ具有一些现成的持久性机制,例如FileStoreJdbcStoreMemoryStore。如果需要,您也可以实现自己的Store

如果您尚未找到QFJ应用程序,请访问以下链接:https://github.com/quickfix-j/quickfixj#creating-a-quickfixj-application

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...