2012-01-30 107 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

相關問題