问题描述
我刚开始使用QuickFIX / J。我对他们的文档感到困惑的一件事是,通过FIX协议的QuickFIX实现确切地确保了消息传递合同是什么?
尤其是,我知道FIX具有基于序列号的内置机制,实现可以利用该机制来处理乱序,丢失或重复的消息。但是QuickFIX / J是否已经内置了功能?作为使用QuickFIX / J与修订引擎进行通信的应用程序,我可以假设:
-
从QuickFIX / J传递到我的应用程序的消息总是井井有条。
-
没有丢失的消息(QuickFIX / J将自动处理 重新请求)
-
没有重复的消息(QuickFIX / J可以 查看到目前为止收到的序列号并过滤掉 重复)
-
如果我的应用崩溃了,重启后是否可以从先前的已知序列号自动恢复会话? (例如,是否有任何现成的序列号持久性机制?)
解决方法
QuickFIX / J实现了FIX会话协议,因此它可以为您处理所有会话级内容(连接,序列号等)。
- 是的,但可能有重复项,请参阅3。
- 是的。
- 不,实际上QFJ仍会将可能的重复项转发到您的应用程序,因为您可能仍想处理这些重复项。您需要根据
43/PossDupFlag
自行过滤它们。 - 是的。
- 是的。 QFJ具有一些现成的持久性机制,例如
FileStore
,JdbcStore
,MemoryStore
。如果需要,您也可以实现自己的Store
。
如果您尚未找到QFJ应用程序,请访问以下链接:https://github.com/quickfix-j/quickfixj#creating-a-quickfixj-application