Quickfix在启动时重置序列号,但未在登录消息中设置ResetSeqNum

use*_*344 3 quickfix

当quickfix引发在重新连接startTime(在配置中定义),它删除了与序列号文件,但不设置ResetSeqNumFlagY,服务器与回复Logout文本消息"序列号味精低......"有没有一种方法来设置ResetSeqNumFlag = Y只为这种行为?我不想在每次登录时重置序列.

Fra*_*ith 10

这似乎是一个QuickFIX/J怪癖(有些人可能认为它是一个bug).如果ResetOnLogon = N,则在会话开始时间触发登录时不会发送ResetSeqNumFlag = Y. 如果ResetOnLogon = Y,则每次登录时都会发送ResetSeqNumFlag = Y. 我认为这在实践中不是一个大问题,因为FIX会话中的参与者通常在会话结束后在本地重置其序列号(逻辑上在结束时间结束,而不是连接断开).

如果要稍微修改源代码以实现此行为,则需要修改quickfix.Session next()方法.您可以添加一个本地标志,指示会话已重新启动(根据checkSessionTime()确定的计划).将该标志传递给generateLogon(),该方法将使用它来确定何时发送ResetSeqNumFlag = Y,而不管ResetOnLogon配置如何.