quickfix - 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 发送它们时,我看到第二个响应的以下错误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
不同会话的顺序不同。问题出在客户端的配置中。
推荐阅读
- neo4j - 在 Neo4j 中 FOREACH 之后返回关系详细信息
- mongodb - 我想将 mongologs 记录到 mongodb
- windbg - 如何在 WinDbg 中配置“脚本”搜索路径?
- excel - 检索日期与昨天过去 7 天匹配的行
- c++ - Qt 连接:使用 Lambda 表达式重置传递的 int 变量(奇怪)
- php - 致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数号:混合命名参数和位置参数
- ms-access-2007 - MS Access:Access 2016 应用程序能否与 Access 2007 一起使用?
- c# - 每次有用户输入时,如何增加我的数组大小以增加?
- reactjs - 如何在作为数据库的 firebase 和 firestore 之间动态切换并相应地调度 redux 操作
- java - 使用 Futures 并行运行多个调用生成对象