pinpoint-plugin icon indicating copy to clipboard operation
pinpoint-plugin copied to clipboard

question about Scope

Open aximo opened this issue 9 years ago • 3 comments

请问一下 @Scope(value = RabbitMQConstants.RABBITMQ_SCOPE) 这个注解的具体作用是什么?

aximo avatar Jan 14 '16 06:01 aximo

其实我也不太清楚,要等官方的文档来解答,他们说正在编写插件开发文档

我个人理解是用于两个方面:

一是重复跟踪问题

比如某个类有方法A和方法B(这两个方法都写了拦截器进行跟踪),方法A调用了方法B 如果外部调用方法B,会产生一次跟踪,如果外部调用方法A,会产生两次跟踪 addScopedInterceptor方法可以将这两个方法作为一个作用域描述,这样就不会产生两次跟踪了

二是用来传递某些自定义信息

标记到同一个作用域之后,就可以传递共享数据了,例如 methodA:

MyAttachment attachment = (MyAttachment)scope.getCurrentInvocation().getOrCreateAttachment(ATTACHMENT_FACTORY);
attachment.setTrace(shouldTrace);

methodB:

scope.getCurrentInvocation().getAttachment()

majinkai avatar Jan 14 '16 07:01 majinkai

理解比我深刻.

另外,能否帮忙看下一个问题,仿照你的插件写的

https://github.com/naver/pinpoint/issues/1412#issuecomment-171650121

aximo avatar Jan 14 '16 13:01 aximo

暂时可以先不考虑消息队列的插件了,只做发布端的就可以了,pinpoint团队回复说,目前的模式不支持一个发布者多个消费者的模型,因为SpanID是在发布端生成的,多个消费者的情况每次消费都会覆盖上一次的记录。如果让消费端生成SpanID,可能会引起id碰撞,等他们出新的模型就可以了。

majinkai avatar Jan 15 '16 01:01 majinkai