Как решить, что MsgSeqNum слишком мал в QuickFixJ?

Я действую как акцептор и не имею никакого контроля над инициатором. Всякий раз, когда инициатор подключается, я получаю это

58=MsgSeqNum too low, expecting x but received y

Пока пробовал ResetOnLogon=Y, но не помогает. Вероятно, у инициатора нет соответствующей конфигурации.

Следующая идея заключалась в том, чтобы проанализировать поле 58 и установить из него SeqNum, есть ли способ установить SeqNum? (желательно не трогая файл .seqnums)

Изменить: я нашел способ изменить порядковые номера, но, похоже, он не работает, все еще получая то же сообщение

session.setNextSenderMsgSeqNum(x);
session.setNextTargetMsgSeqNum(x);

person Ninius86    schedule 05.03.2018    source источник


Ответы (2)


Порядковые номера между клиентом и сервером должны быть синхронизированы. В вашем случае, даже если вы сбросите порядковый номер, вы получите ту же ошибку, потому что клиент отправит больший порядковый номер, чем у вас есть. Обычно и клиент, и сервер сбрасывают порядковые номера по соглашению (при входе в систему, каждый день или при отправке 141=Y и т. д.).

person πter    schedule 06.03.2018

Взгляните на сообщение SequenceReset. Сообщение сброса последовательности используется отправляющим приложением для сброса входящего порядкового номера на противоположной стороне.

person rupweb    schedule 06.03.2018