Я использую новую версию pinpoint (из github мастера), у нее есть поддержка AsyncContext, но я использую несколько случаев в методе, но плагины не работают (я использую плагин реактора для тестирования). мой код, как показано ниже:
@Override
public String sayHello(String name) {
LOGGER.info("[sayHello]start: {}", name);
//执行一个 complete 1 任务
//testFuture();
redisUtil.set(name, name + new Date());
//reactor
Flux.range(1, 2).map(i -> 10 / (3 - i)).retry(1).subscribe(System.out::println, System.err::println);
Flux.generate(sink -> {
sink.next("Hello");
sink.complete();
}).subscribe(System.out::println);
Flux.create((t) -> {
t.next("create");
t.next("create1");
t.complete();
}).subscribe(System.out::println);
return "Hello " + name + " " + new Date();
}
, когда я отлаживаю код точного агента, я обнаружил AsyncContextSpanEventSimpleAroundInterceptor #, прежде чем будет getAsyncContext, результат всегда будет нулевым, поэтому трассировка каждый раз прерывается.
//from AsyncContextSpanEventSimpleAroundInterceptor#before
@Override
public void before(Object target, Object[] args) {
if (isDebug) {
logger.beforeInterceptor(target, args);
}
//here ,the get context operation returns null,!!!!
final AsyncContext asyncContext = getAsyncContext(target);
if (asyncContext == null) {
logger.debug("AsyncContext not found");
return;
}
.......
}
может кто подскажет почему?