簡體   English   中英

Netty HTTP 1.1流水線支持

[英]Netty HTTP 1.1 Pipelining Support

我需要通過同一連接將多個異步請求發送到其余服務器,並以FIFO順序執行它們,我認為HTTP 1.1管道傳輸對此非常適合。

我在Netty上發現了一些相關問題,但在他們的用戶指南中找不到很多,而在他們的測試用例中卻找不到任何東西。

Netty支持HTTP 1.1流水線嗎? 如何實施?

一個例子將不勝感激。

相關未解決的問題: HTTP 1.1流水線與HTTP 2多路復用

由於Netty比HTTP層更靠近TCP層,因此發送多個請求很容易,在建立管道之后,只需編寫它們即可。

HttpRequest request1 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/");
request1.headers().set(HttpHeaderNames.HOST, host);
request1.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
request1.headers().set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP);

channel.writeAndFlush(request1);

HttpRequest request2 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/");
request2.headers().set(HttpHeaderNames.HOST, host);
request2.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
request2.headers().set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP);

channel.writeAndFlush(request2);

然后在您的channelRead方法內部,以與發送它們相同的順序讀取它們。

為了正確地管理數據包的隊列,您可以使用如下所示的解決方案,基本上保留一個隊列,這樣您就可以知道在請求完成后要調用的正確回調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM