java - 如何匹配对 Netty 客户端请求的响应?

标签 java multithreading netty

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

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

我也不想更改协议(protocol)并仅出于匹配目的在请求/响应中包含请求 ID。

最佳答案

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

在连接失败的情况下,队列还会为您提供已发送但您尚未收到响应的请求列表。然后,您可以对每个请求采取适当的纠错措施。

关于java - 如何匹配对 Netty 客户端请求的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385377/

相关文章:

c++ - 多线程暴力和递归多维循环。其他方式?

c# - 带 ICommand 和 OnPropertyChanged 的​​ WPF 控件可见性

java - java.lang.UnsupportedOperationException : Reflective setAccessible(true) disabled

java - 在 Android 中解析 A​​syncTask 中的 json 时出错

java - 为什么应用程序崩溃?将 Arraylist 分配给 Array 时出现 NullPointerException

java - 如何选择使用哪个 JDBC 驱动程序?

java - 如何在 Debian 服务器上部署 Spring RESTful API?

java - 如何在竞争条件下将主键值插入表中?

java - Netty Http Client : how to separate client-start,发送请求,和client-shutdown分为不同的方法

java - Netty客户端同步请求响应