热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

检测到修复网关的连接丢失?(快速解决)-Detectinglossofconnectiontofixgateway?(QuickFix)

Imtryingtofindagoodwaytodetectalossofconnection.我正试图找到一种检测连接丢失的好方法。Myadapterisim

I'm trying to find a good way to detect a loss of connection.

我正试图找到一种检测连接丢失的好方法。

My adapter is implemented as a Fix::Application based on one of the examples. It uses a socket initiator to connect to the fix gateway.

我的适配器基于其中一个示例实现为Fix :: Application。它使用套接字启动器连接到修复网关。

When I unplug the internet it takes about 30 seconds for the Fix::Application's onLogout method to be fired. It seems like some underlying class would be aware that there is a problem with the socket much earlier. Is there a quick way took hook into this?

当我拔掉互联网时,Fix :: Application的onLogout方法需要大约30秒才能被触发。似乎某些底层类会更早地意识到套接字存在问题。是否有一个快速的方式挂钩到这?

3 个解决方案

#1


4  

The best way to solve this would probably be to decrease your Heartbeat Interval so you know sooner. I don't know of any messages that fire for a loss of TCP connection, but I don't think QuickFix is listening for OS events either. Although, it would likely flow through the fromAdmin event if there were such a message.

解决这个问题的最佳方法可能是降低心跳间隔,以便更快地了解。我不知道有任何消息会因为丢失TCP连接而触发,但我不认为QuickFix正在监听OS事件。虽然如果有这样的消息,它可能会流经fromAdmin事件。

Did you post your question to the QuickFix DL?

您是否将问题发布到QuickFix DL?

#2


2  

It's possible that the fix engine you're using doesn't call back when TCP is disconnected, or it calls back on something other than onLogout. Since you're using fix, I would guess it forces a logout due to missed heartbeats.

您正在使用的修复引擎可能在TCP断开连接时不回调,或者回调onLogout以外的其他内容。由于您正在使用修复程序,我猜它会因为错过心跳而强制注销。

Quick way would be to look into the code and check where socket close is being handled, and what path executes when this happens.

快速的方法是查看代码并检查正在处理套接字关闭的位置,以及发生这种情况时执行的路径。

#3


1  

TCP itself comes with a native heartbeat mechanism called SO_KEEPALIVE. Problem is that the default interval for this heartbeat can be as high as 2 hours. This is configured at the OS level. So in theory you can turn on SO_KEEPALIVE, configure a reasonable heartbeat interval at the OS level and be happy. However, because as said this is very OS dependent, most applications choose to implement heartbeating at the application level, and FIX is no exception. Decreasing your FIX heartbeat interval is the way to go here, especially if you are relying on cancel-on-disconnect and extra seconds of undetected connection loss can lead to unwanted order executions. A FIX gateway implemented on top of any fix engine should support heartbeating configuration out-of-the-box. Take a look on CoralGateway for an example. (Disclaimer: I am one of the developers of CoralGateway)

TCP本身带有一个名为SO_KEEPALIVE的本机心跳机制。问题是此心跳的默认间隔可能高达2小时。这是在OS级别配置的。因此理论上你可以打开SO_KEEPALIVE,在操作系统级别配置一个合理的心跳间隔并且很开心。但是,因为如上所述这是非常依赖操作系统的,大多数应用程序选择在应用程序级别实现心跳,并且FIX也不例外。减少FIX心跳间隔是这里的方法,特别是如果您依赖取消断开连接,并且未检测到连接丢失的额外秒数可能导致不必要的订单执行。在任何修复引擎之上实现的FIX网关应该支持开箱即用的心跳配置。以CoralGateway为例。 (免责声明:我是CoralGateway的开发者之一)


推荐阅读
  • react项目无法编译2.npm错误信息: ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
  • syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. ... [详细]
author-avatar
允思顾我在
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有