Сброс порядковых номеров сообщений без повторного подключения - PullRequest
1 голос
/ 27 декабря 2011

поскольку официальный сайт QuickFix не работает, я спрашиваю здесь.Я пытаюсь удовлетворить требования моего брокера (FXCM) по готовности API.Я использую Quickfix .NET v1.13.3.Одним из требований было то, что мне нужно сбрасывать порядковые номера один раз в день, и соединение должно все еще работать.Но когда я сбрасываю порядковые номера, используя:

QuickFix.Session.lookupSession(mSessionID).setNextSenderMsgSeqNum(1);
QuickFix.Session.lookupSession(mSessionID).setNextTargetMsgSeqNum(1);

, соединение восстанавливается.Есть ли способ сбросить его без выхода из системы?

Мой файл конфигурации:

[DEFAULT]

#client connection
ConnectionType=initiator

#Logon & Logout timers
LogonTimeout=1
LogoutTimeout=1

ValidateFieldsOutOfOrder=Y
ValidateUserDefinedFields=Y
ValidateFieldsHaveValues=Y
AllowUnknownMsgFields=Y
SocketTcpNoDelay=Y

FileStorePath=Store

CheckLatency=N
CheckCompID=Y

SendRedundantResendRequests=Y
ContinueInitializationOnError=Y

ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=Y
ForceResync=Y

[SESSION]

#login info
username=****
password=****

#protocol version 4.4
BeginString=FIX.4.4

#database and compid
SenderCompID=*****
TargetCompID=*****
TargetSubID=******

HeartBtInt=30
StartTime=01:00:00
EndTime=22:00:00
StartDay=Mon
EndDay=Fri
UseLocalTime=Y

ReconnectInterval=20

#data dictionary
UseDataDictionary=Y
DataDictionary=FXService.FXCM.xml

Я обнаружил в логах в сообщении о выходе из системы эту ошибку:

MsgSeqNum too low, expecting 12 but received 3 

Так что я считаю, что ошибка заключается во временипереустановка.Когда безопасно сбросить порядковые номера и как это сделать?

1 Ответ

2 голосов
/ 28 декабря 2011
ResetOnLogon=Y 
ResetOnLogout=Y 
ResetOnDisconnect=Y 

Вы сбрасываете порядковые номера сообщений по умолчанию при входе / выходе из системы / отключении.Поэтому, когда вы сбрасываете порядковый номер, в вашем коде после настройки сеанса он будет отклонен другой стороной.

Ваша единственная возможность - прочитать сообщение об отклонении и использовать порядковый номер, указанный вОтклонить сообщение, если вы не хотите отключаться от существующего соединения.Сброс порядковых номеров в уже существующем сеансе будет неприятным, то есть восстановит сообщение с правильным порядковым номером, а затем повторно передаст его.Лучше всего сбрасывать последовательности только при входе / выходе из системы / отключении которого механизм быстрого исправления сделает это по умолчанию, так как вы установили флаги в файле конфигурации.

...