Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Netty客户端中匹配请求响应?_Java_Multithreading_Netty - Fatal编程技术网

Java 如何在Netty客户端中匹配请求响应?

Java 如何在Netty客户端中匹配请求响应?,java,multithreading,netty,Java,Multithreading,Netty,我正在用Netty实现一个http客户端应用程序。任务是向多个端点发送相同的请求,并收集答案以供进一步处理。许多这样的请求可以并发发送到相同的端点。问题在于将从一个端点接收到的响应与请求相匹配 一种可能的解决方案是为每个请求创建一个新的处理程序(和管道),如下所述。在这种情况下,请求可以映射到处理程序,处理程序可以存储响应。但这意味着为每个请求创建新连接,这将降低性能 我也不想更改协议,在请求/响应中包含请求ID只是为了匹配。如果客户端和服务器都遵守HTTP管道语义,那么服务器必须按顺序响应请求

我正在用Netty实现一个http客户端应用程序。任务是向多个端点发送相同的请求,并收集答案以供进一步处理。许多这样的请求可以并发发送到相同的端点。问题在于将从一个端点接收到的响应与请求相匹配

一种可能的解决方案是为每个请求创建一个新的处理程序(和管道),如下所述。在这种情况下,请求可以映射到处理程序,处理程序可以存储响应。但这意味着为每个请求创建新连接,这将降低性能


我也不想更改协议,在请求/响应中包含请求ID只是为了匹配。

如果客户端和服务器都遵守HTTP管道语义,那么服务器必须按顺序响应请求。因此,对于每个连接,您都可以维护一个请求队列。每个新请求位于队列的后面,每个响应从队列的前面弹出匹配的请求

如果连接失败,队列还会向您提供已发送但尚未收到响应的请求列表。然后,您可以对每个请求采取适当的错误更正操作