2014-02-10 33 views
0

我正在使用C#中的QuickFix服務啓動器實現過程,需要執行以下操作。Quickfix C#啓動器實現問題

  1. 收聽傳入的QuoteRequest消息並將它們保存到本地數據庫/隊列中。
  2. 我們的用戶將能夠按照這些報價請求進行出價。這些選擇將保存在本地隊列中。 服務將需要讀取隊列並將報價消息發送回發件人。
  3. 聽取QuoteResponse/BusinessReject和QuoteStatus消息來自發件人和我們的結束商店。

我打算在我的服務中有兩個線程。

線程1:這將用於收聽傳入的QuoteRequest,引用響應,Businessreject和quotestatus消息。 Outgoing ExecutionReport將在破解QuoteResponse消息時從OnMessage事件處理程序發送。 這些消息將被存儲在我們的系統中,併發布在我們的網站/隊列中。

線程2:這將偵聽另一個本地隊列並向接受方發送報價(出價)消息。報價將使用Session.SendToTarget發送出去。

有沒有辦法配置兩個啓動器實例在每個線程中使用?或者我創建一個啓動器並添加兩個會話。 如果兩個啓動器都使用相同的套接字服務器和端口,它會工作嗎?另外,如果一條消息沒有被一個線程破解,它可以用於其他線程? 我無法找到處理傳入和傳出消息的多線程方法的任何示例。

欣賞任何關於正確實施方法的輸入/建議。

回答

0

這只是一個連接,只有一個會話,所以應該只有一個發起者。

您可以設置不同的工作線程,但各種回調應該是常用的入口點。他們可以將收到的消息發送到您的線程(您可以讓他們將接收到的消息推送到隊列中或線程消耗的東西)。你的線程可以做他們需要做的事情,然後根據需要調用sendToTarget

高於一切,儘量不要在QF回調中放置任何昂貴的邏輯;把它放在線程中。除此之外,你可以做你想做的。