我正在开发一个使用netty作为客户端连接到服务器的应用程序。要求是只允许一个连接到服务器。但是,该连接应该能够尽可能多地服务多个并发请求。我解决这个问题的方法之一是使用BlockingQueue,但吞吐量并不是最好的。我之前使用阻塞队列的原因是它可以帮助我轻松地将请求与响应匹配,因为架构是请求/响应。
现在我想知道如何最好地重写客户端以发送并发请求并在不使用阻塞队列的情况下获得适当的响应。
请帮我解决任何问题。
答案 0 :(得分:0)
我只是在请求中包含一个唯一的消息标识,该标识也包含在回复中。然后,在客户端中,使用ConcurrentMap
临时存储每个请求的上下文信息,并将其用于匹配回复。
我还会将此机制隐藏在合适的API背后:
void sendReceive(Request request, Handler<Response> responseHandler);