首页 > 解决方案 > MsgSeqNum 序列和不同的会话

问题描述

例如,我为 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 发送它们时,我看到第二个响应的以下错误LogonMsgSeqNum too low, expecting 3 but received 1. 看起来他们的 FIX 服务器具有这些会话的共享/公共 MsgSeqNum 序列(但我不确定)。

所以,我想用这个问题来澄清 QuickFix/n 如何与MsgSeqNum序列一起工作,因为他们糟糕的文档并没有突出这一时刻。

标签: quickfixfix-protocolquickfixn

解决方案


我找到了问题的根源。提供的配置如下所示:

[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不同会话的顺序不同。问题出在客户端的配置中。


推荐阅读