2012-01-30 79 views
2

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

回答

0

一种可能的方法是使用从对方收到的心跳消息。如果心跳消息到达,这意味着连接已经启动,您不需要执行任何操作。你打算如何实施这种方法是可以解释的。您可以使用消息总线或2 FIX引擎之间共享的东西。但这只是一个建议,在我参加FIX项目时,我曾使用过这种方法。

更新: - 我所做的是将一个消息代理放在2个引擎后面,并带有一个控制器。控制器的唯一职责是不断检查心跳消息。在错过心跳消息的那一刻,它将发送一个信号给备用FIX引擎,以启动运行FIX引擎时出现的问题。这种体系结构没有太多的复杂性,只有一个额外的组件。但这只是其中一种选择,可能还有其他许多选择。

+0

感谢您的回复。你能简单地解释一下你觉得好的方法,让其他服务器知道收到心跳消息吗?基本上,我不想增加项目的复杂性。 – Leo 2012-01-30 18:42:11

+0

@Leo - 更新了我的答案。 – DumbCoder 2012-02-01 17:06:25

相关问题