如何在QuickFixJ中手动设置序列号?

时间:2018-04-17 12:36:14

标签: quickfix quickfixj

我是一个接受者。有没有办法手动设置序列号?

我的第一个想法是修改.seqnums文件,但它不起作用。

谷歌提到了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 个答案:

答案 0 :(得分:2)

首先,您需要浏览quickfixJ代码以了解它是如何完成的。

其次,使用这样一个旧版本的quickfixJ的原因是什么?为什么不升级到最新版本。

如果你不能正确理解它们在通信中的使用方式,你应该非常谨慎地改变序列号。如果你不明白,你肯定会遇到晦暗的问题。

您可以执行类似

的操作
  

Session.lookupSession(会话ID).setNextSenderMsgSeqNum())

但在你这样做之前,了解序列号的使用方式非常重要

答案 1 :(得分:0)

您可以设置FIX字段,覆盖toAdmin回调

@Override
public void toAdmin(Message message, SessionID sessionId) {
      message.setBoolean(ResetSeqNumFlag.FIELD, true);
}