个人笔记。
先看下面的case
我们假设
Assume1: ServiceB返回字符串”ServiceB”,
Assume2: ServiceC返回字符串”ServiceC”,
ServiceA 拼接字符串”ServiceA”,加上assume1 和 assume2 的返回结果
预期:client获得“ServiceA ServiceB ServiceC”
实际:client获得“ServiceA ServiceC”
没有获得ServiceB的返回结果, 从log看的话,在ServiceA里面获取的step3的结果也的确是null。
分析:
Client 和 server进行交互的方式,默认是netty,通过NettyHandler进行操作,有消息的收发处理方法。
进行debug,
client到ServiceA之后,在RpcInvocation里有一个async=true,同时RpcContext.getContext().getAttachments()也包含这个属性。
然后进行step2,进行一系列filter,最后到AbstractInvoker, #134开始,
Map<String, String> context = RpcContext.getConte