快速修复/n未连接
本文关键字:连接 | 更新日期: 2023-09-27 18:08:09
我有一个QuickFIX/n的实现,我已经给了客户端。它连接到Currenex RFQ系统。他们偶尔会在启动应用程序时遇到问题。没有抛出错误,在我的测试中工作得很好。他们能够成功连接的唯一方法是重新启动整个服务器。
我不知道为什么会发生这种情况,它没有抛出任何错误。我把整个fix连接封装在try|catch语句中,所以我不知道还会遗漏什么。下面是我的连接方法。执行代码并命中所有日志记录,但从未发送登录消息。
我和我们的客户都束手无策,任何建议都将是一个巨大的帮助。
代码:public void Connect()
{
try
{
string beginString = "FIX.4.2";
MemoryStoreFactory storeFactory = new MemoryStoreFactory();
MessageStoreFactory msgFactory;
LogFactory logfactory;
SessionSettings settings = new SessionSettings();
QuickFix.Dictionary entry = new QuickFix.Dictionary();
entry.SetString("ConnectionType", "initiator");
entry.SetString("ReconnectInterval", "1");
entry.SetString("SocketConnectHost", this.fixHost);
entry.SetString("FileLogPath", this.workingDirectory + "logs");
entry.SetString("FileStorePath", this.workingDirectory + "logs");
entry.SetString("StartTime", "23:59:59");
entry.SetString("EndTime", "23:59:59");
entry.SetString("HeartBtInt", "30");
entry.SetString("SocketNodelay", "Y");
//entry.SetString("SocketTrafficClass", "IPTOS_LOWDELAY");
entry.SetString("ResetSeqNumFlag", "Y");
//entry.SetString("UseDataDictionary", "N");
entry.SetString("DataDictionary", this.workingDirectory + "FixResourceFiles''FIX42.xml");
entry.SetString("ResetOnLogout", "Y");
entry.SetString("ResetOnDisconnect", "Y");
entry.SetString("CheckLatency", "N");
entry.SetString("SocketConnectPort", this.fixPort);
this.sessionId = new QuickFix.SessionID(beginString, this.senderCompId, this.targetCompId, DateTime.Now.ToString("yyyyMMddhhmmssfff"));
settings.Set(this.sessionId, entry);
if (this.storeAllQuickFixMsgs)
{
logfactory = new FileLogFactory(settings);
}
else
{
logfactory = new ScreenLogFactory(settings);
}
msgFactory = new FileStoreFactory(settings);
Logger.MsgLog("Creating QuickFIX Socket Initiator...");
QuickFix.Transport.SocketInitiator init = new QuickFix.Transport.SocketInitiator(this, msgFactory, settings);
//this.socketInitiator = new QuickFix.Transport.SocketInitiator(this, msgFactory, settings, logfactory);
this.socketInitiator = init;
Logger.MsgLog("Starting Socket Initiator...");
this.socketInitiator.Start();
Logger.MsgLog("Started");
}
catch (Exception ex)
{
Logger.MsgLog("Error on FIX Connection: " + ex);
}
}
设置:(企业内部FIX主机)CNXi1scfxcrfq10.192.6.121444test1234
检查以下两行:
entry.SetString("StartTime", "23:59:59");
entry.SetString("EndTime", "23:59:59");
我想这就是你可能面临问题的原因。启动器只会在StartTime启动。你的客户可能会在其他时间开始?