Как вручную установить порядковые номера в QuickFixJ?

Я действую как акцептор. Есть ли способ установить порядковые номера вручную?

Первая идея, которая у меня была, заключалась в том, чтобы изменить файлы.seqnums, но это не работает.

Google упоминает о существовании методов setNextSenderMsgSeqNum и setNextTargetMsgSeqNum, однако я не могу сказать, по какому объекту я должен их вызывать (используя quickfixj 1.4).

Я знаю, что установка порядковых номеров вручную не рекомендуется, и есть несколько флагов, таких как ResetOnLogon и ResetOnDisconnect, но я не имею никакого контроля над инициатором, и есть куча других акцепторов (тестовых инструментов), которые используют тот же сеанс.

Application myApp = new FIXSender();
settings = new SessionSettings(sessionConfig);
MessageFactory messageFactory = new MessageFactory();
MessageStoreFactory storeFactory = new FileStoreFactory(settings);
LogFactory logFactory = new FileLogFactory(settings);
Acceptor acceptor = new SocketAcceptor(myApp, storeFactory, settings, logFactory, messageFactory);
acceptor.start();

2 ответа

Прежде всего вам нужно изучить код quickfixJ, чтобы увидеть, как это делается.

Во-вторых, что является причиной использования такой старой версии quickfixJ? Почему бы не обновить до последней версии.

В-третьих, вы должны быть очень осторожны с изменением порядковых номеров, если вы не понимаете должным образом, как они используются в общении. Если вы не понимаете, вы гарантированно попадете в мутные проблемы.

Вы можете сделать что-то вроде

Session.lookupSession(SESSIONID).setNextSenderMsgSeqNum())

Но прежде чем сделать это, очень важно понять, как используются порядковые номера

Вы можете установить поля FIX, переопределить обратный вызов toAdmin

@Override
public void toAdmin(Message message, SessionID sessionId) {
      message.setBoolean(ResetSeqNumFlag.FIELD, true);
}
Другие вопросы по тегам