Skip to content

Commit 0ab7e92

Browse files
author
YunaiV
committed
开始 WebService 入门示例
1 parent 7fc06d7 commit 0ab7e92

File tree

27 files changed

+644
-32
lines changed

27 files changed

+644
-32
lines changed
+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>lab-61</artifactId>
7+
<groupId>cn.iocoder.springboot.labs</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>lab-61-cat-opentracing-demo</artifactId>
13+
14+
<properties>
15+
<maven.compiler.target>1.8</maven.compiler.target>
16+
<maven.compiler.source>1.8</maven.compiler.source>
17+
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
18+
</properties>
19+
20+
<dependencyManagement>
21+
<dependencies>
22+
<dependency>
23+
<groupId>org.springframework.boot</groupId>
24+
<artifactId>spring-boot-starter-parent</artifactId>
25+
<version>${spring.boot.version}</version>
26+
<type>pom</type>
27+
<scope>import</scope>
28+
</dependency>
29+
</dependencies>
30+
</dependencyManagement>
31+
32+
<dependencies>
33+
<!-- 引入 SpringMVC 相关依赖,并实现对其的自动配置 -->
34+
<dependency>
35+
<groupId>org.springframework.boot</groupId>
36+
<artifactId>spring-boot-starter-web</artifactId>
37+
</dependency>
38+
39+
<!-- 引入 CAT 相关依赖 -->
40+
<dependency>
41+
<groupId>com.dianping.cat</groupId>
42+
<artifactId>cat-client</artifactId>
43+
<version>3.0.0</version>
44+
</dependency>
45+
46+
<!-- 引入 CAT + Opentracing 的集成 -->
47+
<dependency>
48+
<groupId>cn.iocoder.springboot.labs</groupId>
49+
<artifactId>lab-61-cat-opentracing</artifactId>
50+
<version>1.0-SNAPSHOT</version>
51+
</dependency>
52+
</dependencies>
53+
54+
<!-- 引入私服,因为 CAT 依赖并没有发到 Maven 中央仓库 -->
55+
<repositories>
56+
<repository>
57+
<id>central</id>
58+
<name>Maven2 Central Repository</name>
59+
<layout>default</layout>
60+
<url>http://repo1.maven.org/maven2</url>
61+
</repository>
62+
<repository>
63+
<id>unidal.releases</id>
64+
<url>http://unidal.org/nexus/content/repositories/releases/</url>
65+
</repository>
66+
</repositories>
67+
68+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package catdemo;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class Application {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(Application.class, args);
11+
}
12+
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package catdemo.config;
2+
3+
import cn.iocoder.springboot.lab61.cat.opentracing.CatTracer;
4+
import io.opentracing.Tracer;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
@Configuration
9+
public class ZipkinConfig {
10+
11+
@Bean
12+
public Tracer openTracer() {
13+
return new CatTracer();
14+
}
15+
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package catdemo.controller;
2+
3+
import com.dianping.cat.Cat;
4+
import io.opentracing.Span;
5+
import io.opentracing.Tracer;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
@RequestMapping("/demo")
13+
public class DemoController {
14+
15+
@Autowired
16+
private Tracer tracer;
17+
18+
/**
19+
* 监控模型 Transaction 的示例
20+
*/
21+
@GetMapping("/test")
22+
public String test() {
23+
// 创建一个 Span
24+
Span parentSpan = tracer.buildSpan("parent").start();
25+
26+
Span childSpan = tracer.buildSpan("child").start();
27+
childSpan.finish();
28+
29+
Cat.logEvent("测试事件", "123");
30+
31+
// 结束一个 Span
32+
parentSpan.finish();
33+
34+
// 返回
35+
return "opentracing";
36+
}
37+
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
app.name=demo-application

lab-61/lab-61-cat-opentracing/pom.xml

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>lab-61</artifactId>
7+
<groupId>cn.iocoder.springboot.labs</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>lab-61-cat-opentracing</artifactId>
13+
14+
<properties>
15+
<!-- 插件相关配置 -->
16+
<maven.compiler.target>1.8</maven.compiler.target>
17+
<maven.compiler.source>1.8</maven.compiler.source>
18+
</properties>
19+
20+
<dependencies>
21+
<!-- 引入 CAT 相关依赖 -->
22+
<dependency>
23+
<groupId>com.dianping.cat</groupId>
24+
<artifactId>cat-client</artifactId>
25+
<version>3.0.0</version>
26+
</dependency>
27+
28+
<!-- 引入 Opentracing API 的依赖 -->
29+
<dependency>
30+
<groupId>io.opentracing</groupId>
31+
<artifactId>opentracing-api</artifactId>
32+
<version>0.33.0</version>
33+
</dependency>
34+
35+
</dependencies>
36+
37+
<!-- 引入私服,因为 CAT 依赖并没有发到 Maven 中央仓库 -->
38+
<repositories>
39+
<repository>
40+
<id>central</id>
41+
<name>Maven2 Central Repository</name>
42+
<layout>default</layout>
43+
<url>http://repo1.maven.org/maven2</url>
44+
</repository>
45+
<repository>
46+
<id>unidal.releases</id>
47+
<url>http://unidal.org/nexus/content/repositories/releases/</url>
48+
</repository>
49+
</repositories>
50+
51+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package cn.iocoder.springboot.lab61.cat.opentracing;
2+
3+
import com.dianping.cat.message.Transaction;
4+
import io.opentracing.Span;
5+
import io.opentracing.SpanContext;
6+
import io.opentracing.tag.Tag;
7+
8+
import java.util.Map;
9+
10+
public class CatSpan implements Span {
11+
12+
private Transaction transaction;
13+
14+
public CatSpan(Transaction transaction) {
15+
this.transaction = transaction;
16+
}
17+
18+
@Override
19+
public SpanContext context() {
20+
return null;
21+
}
22+
23+
@Override
24+
public Span setTag(String key, String value) {
25+
return null;
26+
}
27+
28+
@Override
29+
public Span setTag(String key, boolean value) {
30+
return null;
31+
}
32+
33+
@Override
34+
public Span setTag(String key, Number value) {
35+
return null;
36+
}
37+
38+
@Override
39+
public <T> Span setTag(Tag<T> tag, T value) {
40+
return null;
41+
}
42+
43+
@Override
44+
public Span log(Map<String, ?> fields) {
45+
return null;
46+
}
47+
48+
@Override
49+
public Span log(long timestampMicroseconds, Map<String, ?> fields) {
50+
return null;
51+
}
52+
53+
@Override
54+
public Span log(String event) {
55+
return null;
56+
}
57+
58+
@Override
59+
public Span log(long timestampMicroseconds, String event) {
60+
return null;
61+
}
62+
63+
@Override
64+
public Span setBaggageItem(String key, String value) {
65+
return null;
66+
}
67+
68+
@Override
69+
public String getBaggageItem(String key) {
70+
return null;
71+
}
72+
73+
@Override
74+
public Span setOperationName(String operationName) {
75+
return null;
76+
}
77+
78+
@Override
79+
public void finish() {
80+
transaction.setStatus(Transaction.SUCCESS);
81+
transaction.complete();
82+
}
83+
84+
@Override
85+
public void finish(long finishMicros) {
86+
87+
}
88+
89+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package cn.iocoder.springboot.lab61.cat.opentracing;
2+
3+
import com.dianping.cat.Cat;
4+
import com.dianping.cat.message.Transaction;
5+
import io.opentracing.Span;
6+
import io.opentracing.SpanContext;
7+
import io.opentracing.Tracer;
8+
import io.opentracing.tag.Tag;
9+
10+
import java.util.LinkedList;
11+
import java.util.List;
12+
13+
public class CatSpanBuilder implements Tracer.SpanBuilder {
14+
15+
private List<cn.iocoder.springboot.lab61.cat.opentracing.Tag> tags = new LinkedList<>();
16+
private String operationName;
17+
18+
public CatSpanBuilder(String operationName) {
19+
this.operationName = operationName;
20+
}
21+
22+
public Tracer.SpanBuilder asChildOf(SpanContext parent) {
23+
return null;
24+
}
25+
26+
public Tracer.SpanBuilder asChildOf(Span parent) {
27+
return null;
28+
}
29+
30+
public Tracer.SpanBuilder addReference(String referenceType, SpanContext referencedContext) {
31+
return null;
32+
}
33+
34+
public Tracer.SpanBuilder ignoreActiveSpan() {
35+
return null;
36+
}
37+
38+
public Tracer.SpanBuilder withTag(String key, String value) {
39+
tags.add(new cn.iocoder.springboot.lab61.cat.opentracing.Tag(key, value));
40+
return this;
41+
}
42+
43+
public Tracer.SpanBuilder withTag(String key, boolean value) {
44+
return null;
45+
}
46+
47+
public Tracer.SpanBuilder withTag(String key, Number value) {
48+
return null;
49+
}
50+
51+
public <T> Tracer.SpanBuilder withTag(Tag<T> tag, T value) {
52+
return null;
53+
}
54+
55+
public Tracer.SpanBuilder withStartTimestamp(long microseconds) {
56+
return null;
57+
}
58+
59+
public Span start() {
60+
Transaction transaction = Cat.newTransaction("Opentracing", operationName);
61+
// TODO tag 的处理
62+
return new CatSpan(transaction);
63+
}
64+
65+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package cn.iocoder.springboot.lab61.cat.opentracing;
2+
3+
import io.opentracing.*;
4+
import io.opentracing.propagation.Format;
5+
6+
public class CatTracer implements Tracer {
7+
8+
public ScopeManager scopeManager() {
9+
return null;
10+
}
11+
12+
public Span activeSpan() {
13+
return null;
14+
}
15+
16+
public Scope activateSpan(Span span) {
17+
return null;
18+
}
19+
20+
public SpanBuilder buildSpan(String operationName) {
21+
return new CatSpanBuilder(operationName);
22+
}
23+
24+
public <C> void inject(SpanContext spanContext, Format<C> format, C carrier) {
25+
26+
}
27+
28+
public <C> SpanContext extract(Format<C> format, C carrier) {
29+
return null;
30+
}
31+
32+
public void close() {
33+
34+
}
35+
36+
}

0 commit comments

Comments
 (0)