我们知道单体架构中的HTTP是同步请求响应,微服务架构中的消息时异步请求,无响应。 但如果实际需求中,我们需要获得这个消息的请求结果怎么办? 理论上也是可以实现的! 首先,需要对请求的消息体进行升级,增加一个msgID,用于在接收返回消息时进行识别。 第二,如果发送和接收消息的双方未约定请
看一下客户端收到消息后的处理: MQClientAPIImpl#processPullResponse private PullResult processPullResponse( final RemotingCommand response) throws MQBrokerException, RemotingCommandException { PullStatus pullStatus = PullStatus.NO_NEW_MSG;
不管是DefaultMQProducer还是DefaultMQPushConsumer,本质都是封装类,发起请求的实际上是RemotingClient, 它的start方法调用之后,启动了一个netty的客户端bootstrap,每次需要与nameService或者broker进行连接的时候,调用 getAndCreateChannel方法,从一个map中创建或者获取channel(创建的时
前提 前置文章: 《基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇》 《基于Netty和SpringBoot实现一个轻量级RPC框架-Server篇》 《基于Netty和SpringBoot实现一个轻量级RPC框架-Client篇》 前一篇文章简单介绍了通过动态代理完成了Client端契约接口调用转换为发送RPC协议请
在sendDefaultImpl方法里面: for (; times < timesTotal; times++) { String lastBrokerName = null == mq ? null : mq.getBrokerName(); MessageQueue mqSelected = this.selectOneMessageQueue(topicPublishInfo, lastBrokerName