如何在 QuickFixJ 中解决 "MsgSeqNum too low"?

How to solve "MsgSeqNum too low" in QuickFixJ?

我是一个接受者,无法控制发起者。 每当启动器连接时,我都会得到这个

58=MsgSeqNum too low, expecting x but received y

目前已尝试 ResetOnLogon=Y,但无济于事。可能启动器没有匹配的配置。

下一个想法是解析字段 58 并从中设置 SeqNum,有没有办法设置 SeqNum? (最好不要触及 .seqnums 文件)

编辑:我找到了一种更改序列号的方法,但它似乎不起作用,仍然收到相同的消息

session.setNextSenderMsgSeqNum(x);
session.setNextTargetMsgSeqNum(x);

查看 SequenceReset 消息。发送应用程序使用序列重置消息来重置对方的传入序列号。

客户端和服务器之间的序号必须同步。在您的情况下,即使您重置序列号,您也会收到相同的错误,因为客户端将发送您拥有的更大的序列号。通常的做法是客户端和服务器根据协议重置序列号(登录时、每天或发送 141=Y 等)。