一、首先导入zipkin需要的依赖

        <!--zipkin-brave start-->
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-core</artifactId>
<version>3.9.0</version>
</dependency>
<!--http方式收集-->
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-spancollector-http</artifactId>
<version>3.9.0</version>
</dependency>
<!--servlet装配-->
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-web-servlet-filter</artifactId>
<version>3.9.0</version>
</dependency> <dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-apache-http-interceptors</artifactId>
<version>3.9.0</version>
</dependency>
<!--httpclient-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<!--zipkin-brave end-->

二、配置类中添加相应的配置

配置拦截器、收集器以及Brave

@Bean
public SpanCollector spanCollector() {
HttpSpanCollector.Config config = HttpSpanCollector.Config.builder().compressionEnabled(false).connectTimeout(5000)
.flushInterval(1).readTimeout(6000).build();
return HttpSpanCollector.create("你的zipkin地址及端口", config, new EmptySpanCollectorMetricsHandler());
} /**
* Brave各工具类的封装
*
* @param spanCollector
* @return
*/
@Bean
public Brave brave(SpanCollector spanCollector) {
Brave.Builder builder = new Brave.Builder("你定义的服务名称");// 指定serviceName
builder.spanCollector(spanCollector);
builder.traceSampler(Sampler.create(1));// 采集率
return builder.build();
} /**
* 拦截器,需要serverRequestInterceptor,serverResponseInterceptor 分别完成sr和ss操作
*
* @param brave
* @return
*/
@Bean
public BraveServletFilter braveServletFilter(Brave brave) {
return new BraveServletFilter(brave.serverRequestInterceptor(), brave.serverResponseInterceptor(),
new DefaultSpanNameProvider());
}

配置httpclient

    @Bean
public CloseableHttpClient httpClient(Brave brave) {
CloseableHttpClient httpclient = HttpClients.custom()
.addInterceptorFirst(new BraveHttpRequestInterceptor(brave.clientRequestInterceptor(),
new DefaultSpanNameProvider()))
.addInterceptorFirst(new BraveHttpResponseInterceptor(brave.clientResponseInterceptor())).build();
return httpclient;
}

配置restTemplate

    @Bean
public RestTemplateCustomizer restTemplateCustomizer(CloseableHttpClient closeableHttpClient) { return new RestTemplateCustomizer() {
@Override
public void customize(RestTemplate restTemplate) {
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(closeableHttpClient));
}
};
} @Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
RestTemplate build = restTemplateBuilder.build();
return build; }

三、项目中的使用

http方式

    @Autowired
private CloseableHttpClient closeableHttpClient; @RequestMapping("zkHttp")
public String testZipKin() throws IOException {
HttpGet get = new HttpGet("http://127.0.0.1:9193/demo2/test");
CloseableHttpResponse response = closeableHttpClient.execute(get);
return EntityUtils.toString(response.getEntity(), "utf-8");
}

restTemplate方式

    @Autowired
private RestTemplate restTemplate; @RequestMapping("testRestTemplate")
public String testRestTemplate(){
String forObject = restTemplate.getForObject("http://127.0.0.1:9193/demo2/test", String.class);
return forObject;
}

zipkin的结果如下

我的调用方式是:demo1调用demo2,demo2又调用了demo1

使用zipkin配置spring boot的链路器(httpclient、restTemplate)的更多相关文章

  1. spring boot 使用拦截器,注解 实现 权限过滤

    http://www.cnblogs.com/zhangXingSheng/p/7744997.html spring boot 使用拦截器 实现 用户登录拦截 http://www.cnblogs. ...

  2. Spring boot自定义拦截器和拦截器重定向配置简单介绍

    大家好: 本文简单介绍一下用于权限控制的Spring boot拦截器配置,拦截器重定向问题. 开发工具:jdk1.8   idea2017(付费版,网上找的破解教程) 1,首先使用idea创建一个Sp ...

  3. spring boot 添加拦截器

    构建一个spring boot项目. 添加拦截器需要添加一个configuration @Configuration @ComponentScan(basePackageClasses = Appli ...

  4. spring boot 添加拦截器的简单实例(springBoot 2.x版本,添加拦截器,静态资源不可访问解决方法)

    spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor 一.HandlerInterceptor HandlerInterceptor是s ...

  5. 【第四十章】Spring Boot 自定义拦截器

    1.首先编写拦截器代码 package com.sarnath.interceptor; import javax.servlet.http.HttpServletRequest; import ja ...

  6. Spring Boot之拦截器与过滤器(完整版)

    作者:liuxiaopeng 链接:http://www.cnblogs.com/paddix 作者:蓝精灵lx原文:https://blog.csdn.net/liuxiao723846/artic ...

  7. Spring Boot (20) 拦截器

    动态资源和静态资源 拦截器可以算是aop的一种实现,专门拦截对动态资源的后台请求,也就是拦截对控制层的请求,主要用于判断用户是否有权限请求后台.拦截器不会拦截静态资源,如spring boot默认静态 ...

  8. spring boot使用拦截器

    1.编写一个拦截器 首先,我们先编写一个拦截器,和spring mvc方式一样.实现HandlerInterceptor类,代码如下 package com.example.demo.intercep ...

  9. 在IDEA中配置spring boot项目的热更新

    在我使用IDEA的过程中,我发现Spring Boot项目本来自带的一个热部署工具无法使用,这里在参考各家博客后给出解决方案: 修改POM 首先POM文件需要包含spring boot的热部署工具,m ...

  10. RabbitMQ进阶使用-延时队列的配置(Spring Boot)

    依赖 MAVEN配置pom.xml <dependency> <groupId>org.springframework.boot</groupId> <art ...

随机推荐

  1. model.train方法的dataset_sink_mode参数设置为False时以step作为单位打印数据——(只在mode=context.GRAPH_MODE下成立,在mode=context.PYNATIVE_MODE模式下不成立)

    如题: 官方中的内容支持: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/advanced_use/summary_record.html ...

  2. 【转载】 Py之cupy:cupy的简介、安装、使用方法之详细攻略

    版权声明:本文为CSDN博主「一个处女座的程序猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/qq_4118 ...

  3. 人工智能、机器学习等科技领域论文中常见的词汇SOTA到底是什么意思,具体的用法是什么???

    如题,经常可以在文章中看到这个SOTA的词汇,也就是state of the art,这个词汇我是看着感觉十分的不懂,这个词汇有时候被用作名词有时候又被用作形容词,但是不管用作形容词还是名词大多数人的 ...

  4. ComfyUI插件:ComfyUI_Noise节点

    前言: 学习ComfyUI是一场持久战,ComfyUI_Noise是对ComfyUI中的噪声进行控制的一个插件库,该库可以完成图像噪声的反推,并通过采样再以几乎无损的方式返回原图,通过该库的使用可以更 ...

  5. 2023 SMU RoboCom-CAIP 选拔赛

    前言 更详细题解可以参考咱学长的( 2023 SMU RoboCom-CAIP 选拔赛.zip A. 小斧头 f_k 表示满足条件的j = k 的(i,j)对的数量.如上图中第四行即为f1至f5的元素 ...

  6. vs2022不安装docker desktop可以打包镜像吗

    vs2022开发的项目可以直接打包镜像到 linux主机. idea 可以使用docker插件直接打包镜像到linux,我想vs2022也可以,于是开始摸索 官网只说支持docker desktop ...

  7. redux开发中的一个小坑

    redux的actiontypes,不可以重名,重名将会报错 When called with an action of type "inserttoken", the slice ...

  8. pc 移动端 双端切换-路由判断

    该封装主要以分类形式,实现对路由的简易区分.便于项目管理. 创建好项目,勾选路由插件,会自动生成 router文件夹与index.ts . index.ts 初始内容 创建项目 自动生成的router ...

  9. 网站由http升级为https图文教程

    网站由http升级为https图文教程 本文是基于凯哥个人网站由http升级为https的记录. 前提说明:凯哥网站在AliYun备案的.所以基于此创建的.如果是腾讯云备案的域名也是类似的. 名词解释 ...

  10. c# RSA加密解密,与java代码互通问题

    RSA加密解密原本是公开算法,但是和一个java的小伙伴对接却出现了点问题,现在记录一下 首先,RSA的公钥私钥,有2种: 1.pem格式. 2.xml格式. 文章底部有pem格式和对应的xml样本数 ...