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 d56ebfc44a473bff038f043395cd83cfea7a98ef..cdf6b940df01830923e8cc77f226ffec1d70a36d 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 0000000000000000000000000000000000000000..824c4bfac118dc7d049541601c2943177582e3ce --- /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 0000000000000000000000000000000000000000..c860c70dfc120d6f9fadb0232cbae499124f93da --- /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 0000000000000000000000000000000000000000..059c4d5ceeb1dc543a2989a125662bcbe78283d1 --- /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 0000000000000000000000000000000000000000..0a2e9a84554566ca6fde624ae47f631bc0afa631 --- /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 0000000000000000000000000000000000000000..00e6fc3cc36f6137a0a98b0d46ec8de6e657fe83 --- /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 0000000000000000000000000000000000000000..cfabb23e9ba5a3afa860bb2d5417ae75c3528fb2 --- /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 0000000000000000000000000000000000000000..5cfc389335b973324917860144efca22667fa2fd --- /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 0000000000000000000000000000000000000000..6484c93d4749b776afc73a848eb127ab0f92543c --- /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