2015-05-21 91 views
1

我正在用Netty實現一個http客戶端應用程序。任務是將相同的請求發送到多個端點並收集答案以供進一步處理。許多這樣的請求可以同時發送到相同的端點。問題是將從一個端點收到的響應與請求進行匹配。如何匹配對Netty客戶端請求的響應?

一個可能的解決方案是爲每個請求創建一個新的處理程序(和管道),如https://stackoverflow.com/a/7905761/4926576所述。在這種情況下,請求可以映射到處理程序,處理程序可以存儲響應。但是這意味着爲每個請求創建新的連接,這會降低性能。

我也不想改變協議,只在請求/響應中包含請求標識符以便進行匹配。

回答

0

如果客戶端和服務器都遵守HTTP流水線語義,則服務器必須按順序響應請求。因此,對於每個連接,您可以維護一個請求隊列。每個新的請求都在隊列的後面,每個響應都會從隊列的前面彈出它的匹配請求。

在發生連接失敗的情況下,隊列還向您提供已發送但未收到響應的請求列表。然後,您可以針對每個請求採取適當的錯誤糾正措施。