【问题标题】:ContinueSpan does not work for local method call in MicronautContinueSpan 不适用于 Micronaut 中的本地方法调用
【发布时间】:2020-01-22 20:21:51
【问题描述】:

我改编了 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 中)。记录对 address() 的 REST 调用。是否只记录 REST 调用而没有本地方法调用?实际上我认为情况并非如此,因为用户指南示例表明这应该有效。

有什么想法吗?

【问题讨论】:

  • 你试过调试吗?我的意思是,激活正确的软件包并检查它是否运行良好。您可以做的另一件事是在 Jaeger 中尝试一下,看看是否是 zipkin GUI 的问题

标签: micronaut zipkin


【解决方案1】:

doubleName 方法是私有的。 Micronaut 无法将 AOP 注释(如 ContinueSpan 应用于私有方法。

【讨论】:

  • 我公开了方法 doubleName 但它仍然没有在 zipkin GUI 中监听。
【解决方案2】:

这些方法是否在 bean 上(Singleton 等)?我发现跨度注释只能正确应用于 bean。我不得不重构我的一些代码来从 Factorys 或类似的地方创建 bean。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多