Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发一个使用 netty 作为客户端连接到服务器的应用程序。要求是仅允许且仅允许一个连接到服务器。但是,该连接应该能够尽可能多地处理多个并发请求。我解决这个问题的方法之一是使用 BlockingQueue,但吞吐量不是最好的。我使用阻塞队列的原因是它可以帮助我轻松地将请求与响应相匹配,因为架构是请求/响应。
现在我想知道如何最好地重写客户端以发送并发请求并在不使用阻塞队列的情况下获得适当的响应。
请帮助我任何想法。
我会简单地在请求中包含一个唯一的消息标识,该标识也包含在回复中。然后,在客户端中,使用 aConcurrentMap临时存储每个请求的上下文信息,并将其用于匹配回复。
ConcurrentMap
我还会将此机制隐藏在合适的 API 后面:
void sendReceive(Request request, Handler<Response> responseHandler);