首页 > 解决方案 > QuickFIX/J 的消息传递合约是什么?我能保证订单交付吗?

问题描述

我刚刚开始使用 QuickFIX/J。我在阅读他们的文档时感到困惑的一件事是,由 FIX 协议的 QuickFIX 实现确保的消息传递合同到底是什么?

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

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

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

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

  4. 如果远程修复引擎崩溃,我将在引擎恢复时自动使用最后一个已知的序列号重新连接

  5. 如果我的应用程序崩溃,当它重新启动时,它是否能够从先前已知的序列号自动恢复会话?(例如,是否会有任何开箱即用的序列号持久性机制?)

标签: fix-protocolquickfixj

解决方案


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

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

以下是有关如何创建 QFJ 应用程序的链接,以防您尚未找到它:https ://github.com/quickfix-j/quickfixj#creating-a-quickfixj-application


推荐阅读