首页 > 解决方案 > quickfixj 启动器由于低 seqnum 太低而断开连接

问题描述

quickfixj 启动器正在断开连接:在尝试登录接受器时遇到 END_OF_STREAM。我们使用供应商的修复引擎作为接受者。来自接受者的反馈是未接受 xxxx 的登录请求,传入太小,期望 305,收到 27。

我阅读了 quickfix 文档,但没有完全了解序列号不匹配的正确解决方案是什么。我知道如果我断开连接,我的发起者将发送一个 35=4 进行重新发送,发起者端 seqnum 要求接受者重新发送消息并填补空白。但是在什么情况下,如果发起者发送较低的 seqnum 将被接收者拒绝并拒绝连接?处理这种拒绝和重新连接的正确程序是什么?为了不丢失任何消息,双方应该如何重置并填补空白?如果发起者和接受者之间有中断,建议的解决方案是什么来保持消息同步而不丢失任何消息?

标签: quickfixquickfixjjinitiator

解决方案


由于您问题的第一句话,我想向您展示同一错误消息的答案 Disconnecting: Encountered END_OF_STREAM。引用了bhageera一篇博文。

最后,原因很愚蠢……我连接的交易对手一次只允许每个用户/密码(即使用这些凭据的会话)进行 1 个连接。事实证明,有另一个应用程序对相同的 TargetCompID 使用相同的凭据。一旦该应用程序被终止,当前的应用程序就可以正常登录。

我搜索了一段时间的错误原因,直到我意识到我有两个具有相同凭据的启动器在两个不同的测试环境中运行。


推荐阅读