2013-06-04 62 views
0




我需要編寫一個Java客戶端應用程序,該應用程序需要與發送事件(xml消息)的服務器建立TCP連接。在從服務器接收事件之前,客戶端也將發送一個xml消息來在服務器上創建一個通道,並且服務器將發回一個響應。然後客戶端在收到事件消息時,必須處理它們並通過相同的TCP連接使用xml響應消息進行響應。服務器是一個遺留應用程序,我無法控制它。
服務器還會發送運行狀況檢查消息,以評估客戶端創建的通道(客戶端必須響應該通道)以保持通道活着。

我對Java中的NIO/Socket/TCP編程沒有經驗,所以想知道什麼是實現這個客戶端的簡單而優雅的方式。

我與春天有體面的經驗和/想知道如果我可以使用Spring線了像(1)一個TCP連接網關/適配器某些組件將負責爲開幕監視連接狀態(2)編組器/ Unmarshaller的將消息從XML轉換爲Java,反之亦然;(3)消息接收方和發送方實際上接收/偵聽消息併發送響應。通過TCP連接異步事件(xml消息)驅動的Java客戶端

有一點要記住的是,會有噸服務器發送的事件消息和客戶端必須很快處理,並立即做出迴應。所以消息處理不能順序發生。

任何建議或指向庫或示例代碼是高度讚賞。

謝謝。

回答

1

,如果你不能處理的消息順序(除非你的客戶端表現尤爲嚴重)

我會用一個簡單的IO插槽和STAX事件解析器消息進行解碼,我會感到非常驚訝。 Javolution XML解析器非常快速。我不喜歡Spring,因爲它傾向於對簡單問題進行復雜的解決方案恕我直言。你只需要一個類文件和幾個小的嵌套類即可完成所有這些。不要害怕自己編寫代碼,這就是你如何成爲一個更有經驗的開發人員。

我希望你應該能夠每秒處理1000個以上大型XML消息和每秒高達20萬的小XML消息與一個讀取器線程。

+1

謝謝你的迴應,彼得。我同意Spring有時會重載解決方案,但我發現它在佈線和抽象細節方面非常方便,更重要的是,採用一致的方法來解決許多問題。回到我的問題,我也想寫我自己的東西。我將檢查STaX事件解析器和Javolution XML解析器。 – user2452768

相關問題