建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

Whoami123

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-5-29 08:53:09 2272 4 楼主 显示全部楼层
[技术交流] CSE 中队列,服务的provider 是否可见CAS队列?CSE框架是否能透传消息头给后续调用者

  1. 服务Provider是否可见CAS Message queue1631348u8zauch7jqidsej.png

  2. CSE 是否可以从框架的角度将consumer在http和rpc的消息头中的信息透传给给后续服务(比如A--》B--》C--》D ,是否可以将A中消息头中字段透传到C,D )

举报
分享

分享文章到朋友圈

分享文章到微博

yhs0092

发帖: 12粉丝: 2

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-5-29 10:45:42 沙发 显示全部楼层
  1. 业务代码中看不到请求消息队列

  2. 根据你的描述,建议考虑一下使用InvocationContext,可以达到透传的效果,使用也更加方便: https://docs.servicecomb.io/java-chassis/zh_CN/general-development/context.html

点赞1 回复 举报

Whoami123

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-5-29 11:32:58 板凳 显示全部楼层

   

yhs0092 发表于 2019-5-29 10:45业务代码中看不到请求消息队列根据你的描述,建议考虑一下使用InvocationContext,可以达到透传的效果,使 ...

还有点疑问: A--》B--》C--》D 这个传递过程中,若A设置进去,B不需要没有做解析,C 需要这个时候是否还能解析到对应的信息?此时是否还要求B仍然要解析和设置,还是只在源头A设置就可以了?

 另外Edge Service是指第一个接入cse的服务的调用方,而handler 是后续的consumer么还是也是在provider中处理的?在服务接口 指的是provider的接口么? 是否每个服务消息都要管理这部分透传的信息??

context设置和获取都支持哪些协议

点赞 回复 举报

yhs0092

发帖: 12粉丝: 2

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-5-30 10:55:03 地板 显示全部楼层

InvocationContext的传递是由CSEJavaSDK内部的机制保证的,用户不需要关心它的编解码传输方面的问题。对于A--》B--》C--》D这样的调用链,只要你在A里设置了InvocationContext,而且在中间没有做显式的删除操作,那么在D上就可以拿到内容,即使你在B和C上没有用到InvocationContext也是如此。


在业务代码里获取InvocationContext的方法有两种,第一种是在接口上声明一个 org.apache.servicecomb.swagger.invocation.context.InvocationContext 类型的参数,这个参数不会对你的服务接口契约有影响;第二种方式是通过 ContextUtils.getInvocationContext() 的方式获取,这种方式依赖于ThreadLocal机制,如果你做了额外的线程切换可能会有影响。

在Handler和HttpClientFilter、HttpServerFilter扩展类里面有一个Invocation类型的参数,可以用它的getContext方法拿到InvocationContext

点赞 回复 举报

Whoami123

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-5-30 12:04:27 5# 显示全部楼层
yhs0092 发表于 2019-5-30 10:55 InvocationContext的传递是由CSEJavaSDK内部的机制保证的,用户不需要关心它的编解码传输方面的问题。对于A ...

线程切换是指在一个服务中处理时,自身控制的线程切换么? 还是指调用方和服务方归属不同的线程,就会有影响

点赞 回复 举报

游客

您需要登录后才可以回帖 登录 | 立即注册