消息恢复
所谓消息的恢复,有2种情况
收到的消息序列号大于所期望的序列号
这个表明丢失了一些消息 。则立刻应该发送一个重传消息,并告诉对方应该重新传送消息的开始序列号和结束序列号。并把当前接收到的消息压入待处理消息队列因为Fix 消息必须要求按顺序处理,等所有重传消息重新传过来,并处理后,再处理队列消息。对方收到重传消息后,则应该根据重传开始和结束序列号重新传送,在重新传送所有消息时候,当遇到消息是Admin类型时候(即:logon,HEARTBEAT,TEST_REQUEST,SEQUENCE_RESET,LOGOUT,RESEND_REQUEST,REJECT)则应该忽略,应该立刻发送一个直接重置的消息告诉对方这些消息不需要重发当遇到消息是业务消息时候,则从消息持久库中调出重新发送,并且要在消息中置一个标示,标示这个消息是重发消息。(在发送之前如果用户指定不需要发送,则可以像admin类型一样发送要求对方直接重置,这个Fix 没有明确规定,目前quicfxi具有这个功能)。举个例子说明:
比如 A 收到 B 发送过来的一个消息其序列号为 10 , 但A期望的是3 ,那么1)A会把消息10压入待处理队列,并且A立刻会发送一个要求重新发送消息给B ,并且指定要重发3-92)B收到后重新发送请求后,从消息持久库中找出3-9消息。假如各消息类型如下:3 : 业务消息4-6 :为admin消息7 :业务消息8 :admin消息9 :业务消息则B在重发的时候。对于3,则直接发送。并且要在消息中置一个标示,标示这个消息是重发消息(对于quickfix在发送之前,会调用用户接口,如果用户拒绝重发,则不发&#x