From 30b87fdbaf9a613c1f5fa24208b4cb73f8dbfbea Mon Sep 17 00:00:00 2001 From: zlt2000 Date: Sat, 30 Jan 2021 12:02:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=9B=86=E6=88=90Dubbo?= =?UTF-8?q?=E7=9A=84demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../central/log/trace/DubboTraceFilter.java | 34 +++++-------- zlt-demo/dubbo-demo/README.md | 12 +++++ zlt-demo/dubbo-demo/pom.xml | 50 +++++++++++++++++++ .../src/main/java/org/zlt/WebDubboApp.java | 20 ++++++++ .../org/zlt/controller/WebController.java | 28 +++++++++++ .../main/java/org/zlt/service/RpcService.java | 12 +++++ .../org/zlt/service/impl/RpcServiceImpl.java | 22 ++++++++ .../src/main/resources/application.yml | 19 +++++++ .../src/main/resources/bootstrap.yml | 11 ++++ 9 files changed, 187 insertions(+), 21 deletions(-) create mode 100644 zlt-demo/dubbo-demo/README.md create mode 100644 zlt-demo/dubbo-demo/pom.xml create mode 100644 zlt-demo/dubbo-demo/src/main/java/org/zlt/WebDubboApp.java create mode 100644 zlt-demo/dubbo-demo/src/main/java/org/zlt/controller/WebController.java create mode 100644 zlt-demo/dubbo-demo/src/main/java/org/zlt/service/RpcService.java create mode 100644 zlt-demo/dubbo-demo/src/main/java/org/zlt/service/impl/RpcServiceImpl.java create mode 100644 zlt-demo/dubbo-demo/src/main/resources/application.yml create mode 100644 zlt-demo/dubbo-demo/src/main/resources/bootstrap.yml diff --git a/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/trace/DubboTraceFilter.java b/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/trace/DubboTraceFilter.java index d56ebfc..cdf6b94 100644 --- a/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/trace/DubboTraceFilter.java +++ b/zlt-commons/zlt-log-spring-boot-starter/src/main/java/com/central/log/trace/DubboTraceFilter.java @@ -1,27 +1,21 @@ package com.central.log.trace; -import com.central.log.properties.TraceProperties; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.*; import org.springframework.util.StringUtils; -import javax.annotation.Resource; - /** * dubbo过滤器,传递traceId * * @author zlt - * @date 2020/10/14 + * @date 2021/1/30 *

* Blog: https://zlt2000.gitee.io * Github: https://github.com/zlt2000 */ @Activate(group = {CommonConstants.PROVIDER, CommonConstants.CONSUMER}, order = MDCTraceUtils.FILTER_ORDER) public class DubboTraceFilter implements Filter { - @Resource - private TraceProperties traceProperties; - /** * 服务消费者:传递traceId给下游服务 * 服务提供者:获取traceId并赋值给MDC @@ -29,25 +23,23 @@ public class DubboTraceFilter implements Filter { @Override public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { boolean isProviderSide = RpcContext.getContext().isProviderSide(); - if (traceProperties.getEnable()) { - if (isProviderSide) { //服务提供者逻辑 - String traceId = invocation.getAttachment(MDCTraceUtils.KEY_TRACE_ID); - if (!StringUtils.isEmpty(traceId)) { - MDCTraceUtils.addTraceId(); - } else { - MDCTraceUtils.putTraceId(traceId); - } - } else { //服务消费者逻辑 - String traceId = MDCTraceUtils.getTraceId(); - if (!StringUtils.isEmpty(traceId)) { - invocation.setAttachment(MDCTraceUtils.KEY_TRACE_ID, traceId); - } + if (isProviderSide) { //服务提供者逻辑 + String traceId = invocation.getAttachment(MDCTraceUtils.KEY_TRACE_ID); + if (StringUtils.isEmpty(traceId)) { + MDCTraceUtils.addTraceId(); + } else { + MDCTraceUtils.putTraceId(traceId); + } + } else { //服务消费者逻辑 + String traceId = MDCTraceUtils.getTraceId(); + if (!StringUtils.isEmpty(traceId)) { + invocation.setAttachment(MDCTraceUtils.KEY_TRACE_ID, traceId); } } try { return invoker.invoke(invocation); } finally { - if (isProviderSide && traceProperties.getEnable()) { + if (isProviderSide) { MDCTraceUtils.removeTraceId(); } } diff --git a/zlt-demo/dubbo-demo/README.md b/zlt-demo/dubbo-demo/README.md new file mode 100644 index 0000000..824c4bf --- /dev/null +++ b/zlt-demo/dubbo-demo/README.md @@ -0,0 +1,12 @@ +## Demo说明 + +Spring Cloud 集成 Dubbo 的 demo + +启动后访问:http://127.0.0.1:8091/test/abc + + + +## 集成 Spring Cloud Gateway +[Dubbo想要个网关怎么办?试试整合Spring Cloud Gateway](https://mp.weixin.qq.com/s/_idYl39i1eQejLLLlCW2sg) + + diff --git a/zlt-demo/dubbo-demo/pom.xml b/zlt-demo/dubbo-demo/pom.xml new file mode 100644 index 0000000..c860c70 --- /dev/null +++ b/zlt-demo/dubbo-demo/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + com.zlt + zlt-demo + 4.2.0 + + dubbo-demo + + + + org.springframework.boot + spring-boot-starter-web + + + + com.zlt + zlt-log-spring-boot-starter + + + + com.alibaba.cloud + spring-cloud-starter-dubbo + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + \ No newline at end of file diff --git a/zlt-demo/dubbo-demo/src/main/java/org/zlt/WebDubboApp.java b/zlt-demo/dubbo-demo/src/main/java/org/zlt/WebDubboApp.java new file mode 100644 index 0000000..059c4d5 --- /dev/null +++ b/zlt-demo/dubbo-demo/src/main/java/org/zlt/WebDubboApp.java @@ -0,0 +1,20 @@ +package org.zlt; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author zlt + * @date 2020/1/30 + *

+ * Blog: https://zlt2000.gitee.io + * Github: https://github.com/zlt2000 + */ +@EnableDiscoveryClient +@SpringBootApplication +public class WebDubboApp { + public static void main(String[] args) { + SpringApplication.run(WebDubboApp.class, args); + } +} diff --git a/zlt-demo/dubbo-demo/src/main/java/org/zlt/controller/WebController.java b/zlt-demo/dubbo-demo/src/main/java/org/zlt/controller/WebController.java new file mode 100644 index 0000000..0a2e9a8 --- /dev/null +++ b/zlt-demo/dubbo-demo/src/main/java/org/zlt/controller/WebController.java @@ -0,0 +1,28 @@ +package org.zlt.controller; + +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; +import org.zlt.service.RpcService; + +/** + * @author zlt + * @date 2020/6/26 + *

+ * Blog: https://zlt2000.gitee.io + * Github: https://github.com/zlt2000 + */ +@Slf4j +@RestController +public class WebController { + @DubboReference + private RpcService dubboService; + + @GetMapping("/test/{p}") + public String test(@PathVariable("p") String param) { + log.info("==============WebController"); + return dubboService.test(param); + } +} diff --git a/zlt-demo/dubbo-demo/src/main/java/org/zlt/service/RpcService.java b/zlt-demo/dubbo-demo/src/main/java/org/zlt/service/RpcService.java new file mode 100644 index 0000000..00e6fc3 --- /dev/null +++ b/zlt-demo/dubbo-demo/src/main/java/org/zlt/service/RpcService.java @@ -0,0 +1,12 @@ +package org.zlt.service; + +/** + * @author zlt + * @date 2020/1/30 + *

+ * Blog: https://zlt2000.gitee.io + * Github: https://github.com/zlt2000 + */ +public interface RpcService { + String test(String param); +} diff --git a/zlt-demo/dubbo-demo/src/main/java/org/zlt/service/impl/RpcServiceImpl.java b/zlt-demo/dubbo-demo/src/main/java/org/zlt/service/impl/RpcServiceImpl.java new file mode 100644 index 0000000..cfabb23 --- /dev/null +++ b/zlt-demo/dubbo-demo/src/main/java/org/zlt/service/impl/RpcServiceImpl.java @@ -0,0 +1,22 @@ +package org.zlt.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboService; +import org.zlt.service.RpcService; + +/** + * @author zlt + * @date 2020/1/30 + *

+ * Blog: https://zlt2000.gitee.io + * Github: https://github.com/zlt2000 + */ +@Slf4j +@DubboService(protocol = "dubbo") +public class RpcServiceImpl implements RpcService { + @Override + public String test(String param) { + log.info("==============RpcServiceImpl"); + return "dubbo service: " + param; + } +} diff --git a/zlt-demo/dubbo-demo/src/main/resources/application.yml b/zlt-demo/dubbo-demo/src/main/resources/application.yml new file mode 100644 index 0000000..5cfc389 --- /dev/null +++ b/zlt-demo/dubbo-demo/src/main/resources/application.yml @@ -0,0 +1,19 @@ +dubbo: + scan: + base-packages: org.zlt.service + protocols: + dubbo: + name: dubbo + port: -1 + registry: + address: spring-cloud://localhost + consumer: + timeout: 5000 + check: false + retries: 0 + cloud: + subscribed-services: + +zlt: + trace: + enable: true \ No newline at end of file diff --git a/zlt-demo/dubbo-demo/src/main/resources/bootstrap.yml b/zlt-demo/dubbo-demo/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..6484c93 --- /dev/null +++ b/zlt-demo/dubbo-demo/src/main/resources/bootstrap.yml @@ -0,0 +1,11 @@ +server: + port: 8091 + +spring: + application: + name: zlt-web-dubbo + main: + allow-bean-definition-overriding: true + cloud: + nacos: + server-addr: 192.168.28.130:8848 \ No newline at end of file -- GitLab