如果 ResendRequest 丢失或发起者无法回答它会怎样?

What happens if a ResendRequest gets lost or the initiator is not able to answer it?

考虑下面的序列图,它描述了 FIX 发起者和接受者之间的通信。请注意,我在这里指的是 FIX.4.4

如您所见,序列号为 2 的消息在传输过程中丢失了。发起者发送另一条消息(序列号为 3),接受者检测到该间隙并发出重发请求,再次请求序列号为 3 的消息。数字 2 和可能跟随的所有内容 (7=2|16=0)。

我无法通过深入研究规范来回答几个问题:

What happens if the "Resend Request" gets lost in transit?

将在您划出的后续消息中检测到间隙。

但是,ResendRequest 实际上不会被重新发送,因为必须重新发送的唯一 session-level 消息是 Reject 消息。 相反,将发送带有 123/GapFillFlag=Y (description)SequenceReset 或将跳过带有 36/NewSeqNo 设置为更高序列号的 SequenceReset 消息的消息,有效跳过不会重发的消息

这在“消息恢复”一章的 FIX 规范中有说明(link)

What happens if the initiator is not able to resend the requested messages?

如上所述,它应该发送 GapFill,或者跳到更高的序列号。