ContinueSpan не работает для локального вызова метода в Micronaut - PullRequest
0 голосов
/ 22 января 2020

Я адаптировал образец из Руководства пользователя Micronaut V1.2.10, глава Трассировка аннотаций.

@NewSpan("hello-world") 
public String hello(@SpanTag("person.name") String name) { 
    return greet("Hello " + name);
}

@ContinueSpan 
public String greet(@SpanTag("hello.greeting") String greet) {
    return greet;
}

Мой код выглядит так:

@NewSpan("hello-world")
@Get("/name")
public String hello(@SpanTag("hello.name") String name) {

    String nameDouble = doubleName(name);

    String address = client.toBlocking()
            .retrieve(HttpRequest.GET("/address"));

    return "Hello world " + nameDouble + " " + address;
}

@ContinueSpan
private String doubleName(@SpanTag("doubleName.name")String name) {
    return name + " " + name;
}

@Get("/address")
@ContinueSpan
public String address() {
    return "Some address";
}

Вопрос в том, почему вызов метода doubleName не регистрируется в zipkin (по крайней мере, он не отображается в zipkin GUI). REST вызов адреса () регистрируется. Регистрируются ли только вызовы REST и нет вызовов локальных методов? На самом деле я не думаю, что это так, потому что пример руководства пользователя говорит, что это должно работать.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Эти методы на бобе (Singleton, et c.)? Я обнаружил, что аннотации span применяются только к бинам правильно. Мне пришлось провести рефакторинг некоторых из моего кода, чтобы создать бины из Factory s или около того.

0 голосов
/ 29 января 2020

Метод doubleName является приватным. Micronaut не может применять аннотации AOP (например, ContinueSpan для частных методов.

...