我是一个接受者。有没有办法手动设置序列号?
我的第一个想法是修改.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();
答案 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);
}