马金凯
马金凯
IntegerCache java.lang.System#identityHashCode
是不是因为B返回A也算一次,之前没有出现过这样的问题,或者因为超时重试,官方其他的插件没有此类问题吗
你尝试一下用户 -> tomcat1 -> tomcat2
你先看一下pinpoint里面的master代码,跟官方几乎是没有什么区别的,挺长时间没动这块代码了,好多地方都忘记了
@dimmacro 逻辑是没错的,拦击的是invoke方法,这个方法双注册中心的情况下应该不会被执行两次的
其实我也不太清楚,要等官方的文档来解答,他们说正在编写插件开发文档 我个人理解是用于两个方面: #### 一是重复跟踪问题 比如某个类有方法A和方法B(这两个方法都写了拦截器进行跟踪),方法A调用了方法B 如果外部调用方法B,会产生一次跟踪,如果外部调用方法A,会产生两次跟踪 addScopedInterceptor方法可以将这两个方法作为一个作用域描述,这样就不会产生两次跟踪了 #### 二是用来传递某些自定义信息 标记到同一个作用域之后,就可以传递共享数据了,例如 methodA: ``` MyAttachment attachment = (MyAttachment)scope.getCurrentInvocation().getOrCreateAttachment(ATTACHMENT_FACTORY); attachment.setTrace(shouldTrace); ``` methodB: ``` scope.getCurrentInvocation().getAttachment() ```
暂时可以先不考虑消息队列的插件了,只做发布端的就可以了,pinpoint团队回复说,目前的模式不支持一个发布者多个消费者的模型,因为SpanID是在发布端生成的,多个消费者的情况每次消费都会覆盖上一次的记录。如果让消费端生成SpanID,可能会引起id碰撞,等他们出新的模型就可以了。
支持,不过好像REST不行