问题描述
请考虑以下顺序图,该顺序图描述了FIX启动器和接受器之间的通信。请注意,我在这里指的是 FIX.4.4 。
如您所见,序列号为2的消息在传输中丢失了。发起方发送另一条消息(序列号为3),接受方检测到该间隙并发出重新发送请求,再次请求序列号为3的消息。数字2及其之后可能出现的所有内容(7=2|16=0
)。
我无法通过浏览规范来回答几个问题:
- 如果“重新发送请求”在运输中丢失怎么办?
- 如果发起方无法重新发送所请求的消息会怎样?
解决方法
如果“重新发送请求”在传输中丢失怎么办?
排队时,将在后续消息中检测到差距。
但是,ResendRequest
实际上不会被重发,因为唯一必须重发的会话级消息是Reject
消息。
相反,将发送带有SequenceReset
(description)的123/GapFillFlag=Y
或通过将SequenceReset
设置为更高序号的36/NewSeqNo
消息跳过该消息,有效地跳过了不会重新发送的消息。
这在FIX规范的“消息恢复”一章(link)
中进行了说明。如果发起方无法重新发送所请求的内容会发生什么 消息吗?
如上所述,它应该发送GapFill
或跳到更高的序列号。