例如,我有两个会话的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
序列对于不同的会话是不同的。问题出在客户端的配置上。