[英]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.