首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuickFIX /n未连接

QuickFIX /n未连接
EN

Stack Overflow用户
提问于 2013-04-08 23:41:22
回答 1查看 1.9K关注 0票数 0

我有一个QuickFIX/n的实现,我已经给了一个客户。它连接到Currenex RFQ系统。当偶尔启动应用程序时,他们会遇到问题。没有抛出任何错误,它在我的测试中运行良好。他们成功连接的唯一方法是重新启动整个服务器。

我不知道为什么会发生这种情况,也不会抛出任何错误。我将整个修复连接包装在try|catch语句中,所以我不知道还会遗漏什么。下面是我的connect方法。代码执行并命中所有日志记录,但从不发送登录消息。

我束手无策,我们的客户也是如此,任何建议都将是一个巨大的帮助。

代码:

代码语言:javascript
复制
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);
        }
    }

设置:(企业内部固定主机) CNX i1scfxcrfq 10.192.6.121 444 test1234

EN

回答 1

Stack Overflow用户

发布于 2013-04-10 21:44:43

检查以下两行:

代码语言:javascript
复制
entry.SetString("StartTime", "23:59:59");
entry.SetString("EndTime", "23:59:59");

我猜这就是你可能面临问题的原因。启动器将仅从StartTime开始。你的委托人可能会在其他时间启动它?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15883393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档