RocketMQ-netty同步调用
2017-12-28 14:42:34   0  举报             
     
         
 RocketMQ远程Netty同步调用
    作者其他创作
 大纲/内容
 waiting ...调用者线程等待结果中
  调用者线程
  线程被唤醒,返回responseCommand,调用结束
  NettyServerHandler中的channelRead0被触发,执行processRequest,获取到Client的数据,将数据的执行给Server的请求处理线程
  唤醒
  处理数据,发送response结果,request中的那个opaque的值不变,原封不动发送给Client
  channel.writeAndFlush(request);channelFuture.addListener();用Netty的channal将request数据发送去Server。Netty异步发送数据是异步的,监听opertionComplete事件
    int opaque = request.getOpaque();获取request的唯一自增标识:opaque
  ResponseFuture responseFuture = new ResponseFuture()创建异步调用结果:responseFuture
  NettyRemotingClient
  operationComplete发送成功,由Netty调用ChannelFutureListener的operationComplete方法
  Netty IO线程
  NettyRemotingServer
  触发
  responseFuture.waitResponse(timeout);Client端线程进行等待,内部使用的是countDownLatch.await()
  writeAndFlush
  请求处理线程
  ctx.writeAndFlush(response)
   
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
 