例如,我有两个会话的QuickFix / n配置,例如:
[DEFAULT]
...
[SESSION]
# Settings for first session
...
[SESSION]
# Settings for second session
...
这些会话应该具有不同的MsgSeqNum
顺序,即,如果我向第一会话发送Logon
消息,则它应该具有MsgSeqNum = 1
,而向第二会话发送的Logon
消息应该具有MsgSeqNum = 1
,因为我向不同的会话发送了消息有不同的顺序。我说的对吗?
还有一个相关的问题。是否可以为一个不同的会话使用一个共享的MsgSeqNum
序列?
更新
我正在与第三方FIX服务器集成。他们的支持告诉我我应该发送两个Logon
消息(用于两个会话),但是当QuickFix / n发送它们时,我在第二个Logon
的响应中看到以下错误:MsgSeqNum too low, expecting 3 but received 1
。看起来他们的FIX服务器已为这些会话共享/公用MsgSeqNum序列(但我不确定)。
所以,我想用这个问题来说明QuickFix / n如何与MsgSeqNum
序列一起使用,因为它们的文档不佳并不能突出显示这一时刻。
我已经找到问题的根源。提供的配置如下:
[DEFAULT]
...
[SESSION]
# Settings for first session
ResetOnLogon=Y
...
[SESSION]
# Settings for second session
ResetOnLogon=N
...
第一个会话建立连接,发送Logon
消息并重置MsgSeqNum
,但是第二个会话总是发送MsgSeqNum=1
,因为它没有重置MsgSeqNum
,并且在客户端和服务器端它们是不同的(我想这是之所以发生,是因为我之前在服务器端将其他测试项目在服务器端最多增加了MsgSeqNum
到3)。
因此,以上评论中的Grant Birchmeier是正确的,并且MsgSeqNum
序列对于不同的会话是不同的。问题出在客户端的配置中。