QuickFIX/J如何禁用Initiator自动登录重连机制
QuickFIX/J 关闭 Initiator 自动重连逻辑解决方案
针对你基于Web实现QuickFIX/J Initiator、需要手动控制会话登录的场景,可通过以下两种方式禁用自动重连:
方案1:修改配置全局/单会话禁用重连
QuickFIX/J 的自动重连逻辑由配置项 ReconnectInterval 控制,该参数单位为秒,默认值大于0时会在会话断开后按间隔自动发起重连。你只需要在对应会话的配置段中把该值设为0,即可直接禁用该会话的自动重连:
配置示例:
[SESSION] BeginString=FIX.4.4 SenderCompID=用户输入的compid TargetCompID=用户输入的targetcompid ReconnectInterval=0
方案2:代码层面动态控制(适配Web手动登录场景更灵活)
如果你的业务需要支持不同用户会话动态调整重连逻辑,不需要全局禁用,可通过回调方法主动控制会话生命周期:
- 自定义实现
Application接口,重写onLogout方法,会话异常断开时直接停止对应Initiator实例,或者注销对应会话ID:
@Override public void onLogout(SessionID sessionID) { // 方式1:停止当前Initiator实例,阻止所有会话重连 if (initiator != null) { initiator.stop(); } // 方式2:仅注销当前断开的会话,不影响其他正常会话 // Session.unregisterSession(sessionID); // 同步更新你的用户表连接状态为离线 }
- 用户重新输入登录信息发起登录请求时,再重新构造会话配置,初始化Initiator并调用
start()方法,或者重新注册对应会话ID后启动连接即可。
注意:如果你的服务同时承载多个用户的FIX会话,优先选择方案2的「注销单会话」方式,避免停止Initiator影响其他用户的正常连接。
内容的提问来源于stack exchange,提问作者S Shah
相关产品推荐
相关产品推荐

