ServiceComb提供了Context在微服务之间传递数据。Context是key/value对,只能够使用String类型的数据。由于Context会序列化为json格式并通过HTTP Header传递,因此也不支持ASCII之外的字符,其他字符需要开发者先自行编码再传递。Context在一次请求中,会在请求链上传递,不需要重新设置。access log的trace id等功能都基于这个特性实现的。
Handler包含了Invocation对象,可以直接调用invocation.addContext和invocation.getContext设置。
通过接口注入
public Response cseResponse(InvocationContext c1)
或者
ContextUtils.getInvocationContext()
通过重载EdgeInvocation
EdgeInvocation edgeInvocation = new EdgeInvocation() { protected void createInvocation() { super.createInvocation(); this.invocation.addContext("hello", "world"); } };