首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring Sleuth / Brave中编写自定义跟踪发送程序

如何在Spring Sleuth / Brave中编写自定义跟踪发送程序
EN

Stack Overflow用户
提问于 2021-12-14 20:36:07
回答 1查看 496关注 0票数 0

我公司有定制的分布式跟踪解决方案。我已经准备好了Java客户机/代理库,它能够向服务器发送跟踪/跨。

但是,我想将它与/ Brave集成起来,因此要实现某种来自Brave的桥,所以勇敢的人会使用我的客户机/代理库发送跟踪/跨范围。

如何自定义仅发送者部分在勇敢?

另一种方法是从无到有地实现所有Sleuth接口(Tracer,Span,TraceContext,.这是一项艰巨的任务。

我想使用Brave实现,只是注入某种桥/适配器,它将使用我的自定义客户机/代理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-14 20:58:13

我不建议实现所有的Sleuth接口,在这种情况下,您正在编写跟踪库(您正在重写Brave)。

您可以实现zipkin2.reporter.Sender接口并从它创建一个@Bean,下面是一个示例:

代码语言:javascript
复制
public class SoutSender extends Sender {
    @Override
    public Encoding encoding() {
        return JSON;
    }

    @Override
    public int messageMaxBytes() {
        return 500 * 1024; //500 KiB
    }

    @Override
    public int messageSizeInBytes(List<byte[]> encodedSpans) {
        return encodedSpans.stream()
                .mapToInt(encodedSpan -> encodedSpan.length)
                .sum();
    }

    @Override
    public Call<Void> sendSpans(List<byte[]> encodedSpans) {
        encodedSpans.stream()
                .map(String::new)
                .forEach(System.out::println);

        return Call.create(null);
    }
}

您也需要创建一个Reporter<zipkin2.Span> bean,但是为此,您不需要实现任何东西:

代码语言:javascript
复制
@Bean
Reporter<Span> soutReporter(SoutSender soutSender) {
    return AsyncReporter.create(soutSender);
}

@Bean
Sender soutSender(SoutSender sender) {
    return new SoutSender();
}

这将注册一个附加的记者,如果您只想保留您的,并且不想向zipkin和您自己的系统报告,您需要相应地命名bean,请参阅docs:https://docs.spring.io/spring-cloud-sleuth/docs/current/reference/html/project-features.html#overriding-the-auto-configuration-of-zipkin

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70355246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档