热门标签 | 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的开发者之一)


推荐阅读
  • 微服务优雅上下线的最佳实践
    本文介绍了微服务上下线的正确姿势,避免使用 kill -9 等粗暴手段,确保服务的稳定性和可靠性。 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 我在使用 AngularJS 的路由功能开发单页应用 (SPA),但需要支持 IE7(包括 IE8 的 IE7 兼容模式)。我希望浏览器的历史记录功能能够正常工作,即使需要使用 jQuery 插件。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 在CodeIgniter框架中集成新库文件的过程中,我遇到了一些困惑。具体来说,在跟随nettuts的认证教程时,对于在Welcome控制器中添加的构造函数代码,特别是关于Session的验证部分,我感到不太理解。这部分内容涉及如何确保Session已经初始化并具备相应的功能,这对于实现用户认证至关重要。为了更好地掌握这一知识点,我计划深入研究CodeIgniter的官方文档,并参考更多相关资源,以确保能够正确地集成和使用新库文件。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析
    基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析 ... [详细]
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社区 版权所有