Session Quickfix处理来自多个服务器的同一会话

Session Quickfix处理来自多个服务器的同一会话,session,tcp,quickfix,Session,Tcp,Quickfix,我正在使用Quickfix/J来实现FIX协议。问题是,当应用程序上线时,我们将有两台服务器支持它。但是,只有一台服务器将安装并运行修复引擎。计划是将修复请求从另一台服务器路由到运行Quickfix的服务器。两台服务器上的代码完全相同。 我被卡住了,因为我需要使服务器足够智能,以检查另一台服务器是否已经建立了修复连接。如果未建立连接,此服务器将创建连接。如果连接已经存在,它将保持不变。 这将在将来进一步扩展,如果一台服务器发现另一台安装了修复程序的服务器停机,它将启动自己的修复引擎。 目前,障碍

我正在使用Quickfix/J来实现FIX协议。问题是,当应用程序上线时,我们将有两台服务器支持它。但是,只有一台服务器将安装并运行修复引擎。计划是将修复请求从另一台服务器路由到运行Quickfix的服务器。两台服务器上的代码完全相同。 我被卡住了,因为我需要使服务器足够智能,以检查另一台服务器是否已经建立了修复连接。如果未建立连接,此服务器将创建连接。如果连接已经存在,它将保持不变。 这将在将来进一步扩展,如果一台服务器发现另一台安装了修复程序的服务器停机,它将启动自己的修复引擎。
目前,障碍似乎是找到一种干净的方法来确保只建立一个TCP连接,两台服务器上的代码保持不变。

一种可能的方法是使用从对方收到的心跳消息。如果心跳消息到达,这意味着连接已启动,您无需执行任何操作。您打算如何实施该方法尚待解释。您可以使用消息总线或2修复引擎之间共享的内容。但这只是一个建议,我在一个修复项目中使用了这个ame方法


更新:-我所做的是在两个引擎后面放置一个消息代理,带有一个控制器。控制器的唯一职责是不断检查心跳消息。当它错过心跳消息时,它将向备用修复引擎发送一个信号,假设正在运行的修复引擎出现了一些问题,则该引擎将启动。这种架构没有太多复杂性,只有一个额外的组件。但这只是其中一种选择,可能还有很多其他选择。

一种可能的方法是使用您从对方收到的心跳信息。如果心跳消息到达,这意味着连接已启动,您无需执行任何操作。您打算如何实施该方法尚待解释。您可以使用消息总线或2修复引擎之间共享的内容。但这只是一个建议,我在一个修复项目中使用了这个ame方法


更新:-我所做的是在两个引擎后面放置一个消息代理,带有一个控制器。控制器的唯一职责是不断检查心跳消息。当它错过心跳消息时,它将向备用修复引擎发送一个信号,假设正在运行的修复引擎出现了一些问题,则该引擎将启动。这种架构没有太多复杂性,只有一个额外的组件。但这只是选项之一,可能还有很多其他选项。

谢谢您的回复。您能否简单地解释一下,您认为让其他服务器知道接收心跳消息的方法是好的?基本上,我不想增加项目的复杂性。谢谢你的回复。您能否简单地解释一下,您认为让其他服务器知道接收心跳消息的方法是好的?基本上,我不想增加项目的复杂性。