我公司有定制的分布式跟踪解决方案。我已经准备好了Java客户机/代理库,它能够向服务器发送跟踪/跨。
但是,我想将它与/ Brave集成起来,因此要实现某种来自Brave的桥,所以勇敢的人会使用我的客户机/代理库发送跟踪/跨范围。
如何自定义仅发送者部分在勇敢?
另一种方法是从无到有地实现所有Sleuth接口(Tracer,Span,TraceContext,.这是一项艰巨的任务。
我想使用Brave实现,只是注入某种桥/适配器,它将使用我的自定义客户机/代理。
发布于 2021-12-14 20:58:13
我不建议实现所有的Sleuth接口,在这种情况下,您正在编写跟踪库(您正在重写Brave)。
您可以实现zipkin2.reporter.Sender接口并从它创建一个@Bean,下面是一个示例:
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,但是为此,您不需要实现任何东西:
@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
https://stackoverflow.com/questions/70355246
复制相似问题