日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dubbo protocol port 消费者端_springboot整合dubbo设置全局唯一ID进行日志追踪

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dubbo protocol port 消费者端_springboot整合dubbo设置全局唯一ID进行日志追踪 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

擊上方藍色“程序員白楠楠”,選擇“設為星標”

作者:松下聽泉

出處:https://blog.csdn.net/weixin_39427718

1.新建項目


利用idea創建一個父項目,三個子項目,其中一個項目為生產者,一個項目為消費者,一個為接口等公共服務項目,生產者和消費者需要有web依賴,可以作為tomcat容器啟動。

2.項目依賴

<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.6</version>
</dependency>

<!-- zk的依賴 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.6</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>

3.在facade項目中新建接口

4.編寫生產者

4.1 增加dubbo配置

server.port=8081
dubbo.registry.address=zookeeper://localhost:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.timeout=30000
dubbo.application.name=dubbo-provider-ll

4.2 編寫生產者dubbo filter

public class ProviderFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
Object threadName= invocation.getAttachment("ThreadName");
if(null!=threadName){
Thread thread = Thread.currentThread();
thread.setName(threadName.toString());
}
return invoker.invoke(invocation);
}
}

注意:此處Filter 是dubbo的filter,不是servlet的filter

這里代碼的目的是將從消費端傳來的線程名稱設置為線程名稱

在resources目錄下新建META-INF/dubbo/com.alibaba.dubbo.rpc.Filter 文件
即新增目錄META-INF/dubbo和文件 com.alibaba.dubbo.rpc.Filter

在文件中增加,等號后面為實現dubbo filter的實現類路徑providerFilter=com.dubbo.spring.provider.filter.ProviderFilter

4.3編寫dubbo生產者實現類

@Service(filter = {"providerFilter"})
public class DemoServiceImpl implements IDemoService {
public Logger LOGGER= LoggerFactory.getLogger(DemoServiceImpl.class);
@Override
public String getName() {
LOGGER.info("provider ThreadName : "+Thread.currentThread().getName());
return "dubbo-test";
}
}

5.編寫消費者

5.1編寫消費者filter

public class DubboFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
String name = Thread.currentThread().getName();
invocation.setAttachment("ThreadName",name);
return invoker.invoke(invocation);
}
}

此處是將線程名稱放入到attachment中,attachment底層是hashmap,后續使用dubbo請求生產者時,會把attachment給到生產者,故在生產中中可以通過key ThreadName來獲取消費者端的線程名稱在resources目錄下新建META-INF/dubbo/com.alibaba.dubbo.rpc.Filter 文件
即新增目錄META-INF/dubbo和文件 com.alibaba.dubbo.rpc.Filter

在文件中增加,等號后面為實現dubbo filter的實現類路徑consumerFilter=com.dubbo.spring.consumer.filter.DubboFilter

5.2 編寫response對象

public class Response implements Serializable {

private static final long serialVersionUID = -3186818832535757509L;
private String code;

private String message;

private Object result;

private String index;

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public Object getResult() {
return result;
}

public void setResult(Object result) {
this.result = result;
}

public String getIndex() {
return index;
}

public void setIndex(String index) {
this.index = index;
}
}

此response為web端返回到頁面統一對象

5.3 編寫aop切面

@Aspect
@Component
public class AopContext {

@Before("execution(* com.dubbo.spring..*.*(..))")
public void before(){
Thread thread = Thread.currentThread();
thread.setName(UUIDUtil.getUUID());
}
@Around("execution(* com.dubbo.spring..*.*(..))")
public Object around(ProceedingJoinPoint pjp){
Response response=new Response();
try {
Object proceed = pjp.proceed();
if(proceed instanceof Response){
response=(Response) proceed;
response.setIndex(Thread.currentThread().getName());
}
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return response;
}
}

1.before是在請求進入時給線程設置名稱,為隨機生成的uuid
2.around是環繞通知,在執行完之后,在返回的結果中將線程名稱設置進去,便于以后異常追蹤

5.4 編寫web

@RestController
public class WebController {

private Logger LOGGER= LoggerFactory.getLogger(WebController.class);

@Reference(filter = {"consumerFilter"})
private IDemoService iDemoService;

@GetMapping("/getName")
public Response getName(){
LOGGER.info("consumer ThreadName : "+Thread.currentThread().getName());
String name = iDemoService.getName();
Response response=new Response();
response.setResult(name);
response.setCode("1001");
response.setMessage("success");
return response;
}
}

請求結果


此處為postman響應的,index 為1ca55cb7a17148879923265b89102ccf

生產者線程名稱:
消費者線程名稱:可以看到從web頁面到生產者,消費者,都有一個全局唯一id進行貫穿,如果在web頁面提示有異常時,可以通過這個uuid進行日志追蹤

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的dubbo protocol port 消费者端_springboot整合dubbo设置全局唯一ID进行日志追踪的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av日韩一区 | 欧美日韩高清 | 污片在线免费观看 | 天天干天天干天天干天天 | 操操操操操操操操操 | 国产黄色自拍视频 | 国产激情av一区二区三区 | 免费av小说 | 91爱爱爱 | 中国老太婆性视频 | 在线观看国产 | 美日韩精品 | 国产一线天粉嫩馒头极品av | 亚洲男人天堂av | 影音先锋天堂网 | 日本三级韩国三级美三级91 | 老司机在线精品视频 | 超碰在线资源 | 欧美区亚洲区 | 777毛片 | heyzo久久| 伊人久久精品一区二区三区 | www.五月婷婷 | 手机在线永久免费观看av片 | 激情小说专区 | 91久久极品少妇xxxxⅹ软件 | 蜜臀在线一区二区三区 | 九色91 | 99re6在线精品视频免费播放 | 吖v在线| 日韩一区二区三区在线观看 | 午夜精品一区二区三区在线视频 | 总受合集lunjian双性h | 天天色天天干天天色 | 久久久久久免费视频 | 日韩精品视频网 | 色综合一区二区 | av每日更新在线观看 | 亚洲欧美另类日韩 | 久久精品视频在线播放 | 亚洲三级视频 | 欧美日韩国产免费一区二区三区 | 国产欧美亚洲精品 | 亚洲av无码一区二区二三区软件 | 97超碰人人在线 | 特大黑人巨人吊xxxx | 久久逼逼 | 色综合图片 | 能在线观看的av网站 | 综合五月激情 | 天堂视频在线免费观看 | 撒尿free性hd| 国产乱国产乱老熟 | 西川结衣在线观看 | 亚洲人成电影网 | 麻豆影视 | 黄色大全免费看 | 91观看视频 | 精品中出 | 哪个网站可以看毛片 | 欧美四级在线观看 | 黑人操日本女人视频 | 国内自拍第二页 | 国产香蕉97碰碰碰视频在线观看 | 大陆日韩欧美 | 五月天久久久久久 | 黄色一级小视频 | 久久久成人精品一区二区三区 | 国产精品九九视频 | 国产欲妇 | 精品国产乱码久久久久久蜜臀网站 | 久久久久亚洲av片无码v | 无码人中文字幕 | 国产鲁鲁视频在线观看免费 | 欧美zozo| 精品久久无码中文字幕 | 男人的天堂网在线 | 极品销魂美女一区二区三区 | 一区不卡视频 | 密桃av在线 | 日本女优在线看 | 91夜色| 中文在线8资源库 | 久久无码性爱视频 | 国产欧美一区二区三区在线看蜜臂 | 91精品小视频 | 欧美精品在线视频观看 | 国产一区二区三区网站 | 中文字幕av免费在线观看 | 国产福利小视频在线观看 | 久久夫妻视频 | 在线无码va中文字幕无码 | 美女考逼 | 波多野结衣国产在线 | 中文字幕在线网址 | 艳妇臀荡乳欲伦交换gif | 丝袜脚交免费网站xx | 中文字幕有码视频 | 欧美黑粗硬 |