代码拉取完成,页面将自动刷新
最开始的时候是通过 AttributeMap
绑定到Channel上实现的,相关代码如下:
NettyClientTransport.java
(用来发送 RpcRequest 请求)
NettyClientHandler.java
(自定义客户端 ChannelHandler 来处理服务端发过来的数据)
这种是实现的缺点是不清晰,而且你每次都要调用 channel.closeFuture().sync();
阻塞来手动等待请求返回。
我使用 CompletableFuture
包装返回结果,对代码进行了重构,重要部分的代码如下:
NettyClientTransport.java
(用来发送 RpcRequest 请求)
NettyClientHandler.java
(自定义客户端 ChannelHandler 来处理服务端发过来的数据)
UnprocessedRequests.java
存放了未处理的请求(建议限制 map 容器大小,避免未处理请求过多 OOM
现在,在你只需要通过下面的方式就能成功接收到客户端返回的结果:
CompletableFuture<RpcResponse> completableFuture = (CompletableFuture<RpcResponse>) rpcRequestTransport.sendRpcRequest(rpcRequest);
rpcResponse = completableFuture.get();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。