如果 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
,或者跳到更高的序列号。
考虑下面的序列图,它描述了 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
,或者跳到更高的序列号。