我正在使用Quickfix / J来实现FIX协议。问题是我们将有两台服务器支持该应用程序上线。但是,只有一台服务器启动并运行FIX引擎。计划是将来自其他服务器的FIX请求路由到运行Quickfix的服务器。两台服务器上的代码完全相同。 我陷入困境,因为我需要使服务器足够智能,以检查其他服务器是否已建立FIX连接。如果未建立连接,则此服务器将创建连接。如果连接已经存在,它将保持相当。 这将在以后进一步扩展,如果服务器找到其他具有FIX的服务器,下降,它将启动自己的FIX引擎。 目前,障碍似乎是找到一种干净的方法来确保只建立一个TCP连接,两个服务器上的代码保持不变。
答案 0 :(得分:0)
一种可能的方法是使用您从交易对手那里收到的心跳消息。如果心跳消息到达,则表示连接已启动,您无需执行任何操作。您打算如何实施该方法可以解释。您可以使用消息总线或2 FIX引擎之间共享的内容。但这只是一个建议,我在开展FIX项目时使用了这种方法。
更新: - 我所做的是在一个带有控制器的2个引擎后面放置一个消息代理。控制器的唯一职责是继续检查心跳消息。它错过心跳消息的那一刻它将向备用FIX引擎发送信号,以便假设运行的FIX引擎存在一些问题。这种架构中没有太多复杂性,只有一个额外的组件。但这只是其中一个选择,可能还有很多选择。