dubbo的端口地址和ip写在那_开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~...
不知道你是否在工作中有遇到過類似情況:
- dubbo接口調(diào)試復(fù)雜,需要通過telnet命令或者通過consumer調(diào)用來觸發(fā)。
- telnet語句參數(shù)格式復(fù)雜,每次編寫都要小心謹(jǐn)慎,一旦出錯(cuò)又需重來。
- 復(fù)雜對象參數(shù)傳參調(diào)用接口復(fù)雜,編寫java api調(diào)用接口時(shí)間成本較高。
上述這些坑我在工作中都有遇見過,發(fā)現(xiàn)大部分耗時(shí)都會(huì)卡在調(diào)用dubbo服務(wù)做自測的階段,所以后來花費(fèi)了寫業(yè)余時(shí)間寫了一款高效的dubbo測試工具開源給大家使用。
這款工具目前已在實(shí)際工作中應(yīng)用半年多,基本功能已經(jīng)成熟,后續(xù)依舊會(huì)進(jìn)行版本維護(hù)。
相關(guān)的代碼地址為:
https://gitee.com/IdeaHome_admin/dubbo-proxy-toolsps: 如果大家喜歡,希望能給出一顆寶貴的star
關(guān)于如何部署本工具
下載了gitlab的代碼之后,你會(huì)看到有兩個(gè)文件包:iubbo-proxy和iubbo-proxy-web,它們分別正好對應(yīng)了后端代碼和前端代碼。
前端代碼的部署
前端采用非常簡單的vue技術(shù),只需要將文件部署到一臺nginx上邊即可運(yùn)作。
前端的默認(rèn)訪問頁面是test-dubbo-web.html。
但是有兩個(gè)小點(diǎn)需要改動(dòng)下js配置
constants.js
這份文件里面編寫了對應(yīng)的請求server地址,這塊是對應(yīng)了后端服務(wù)的url。
由于請求dubbo接口需要通過zk注冊中心來拉去服務(wù)名列表,所以需要在iubbo.x.js里面的commonzk中做配置:
這里的host是一個(gè)別稱,相當(dāng)于一個(gè)key用于供前端展示,實(shí)際上傳輸給后端的是用ip這個(gè)值。
后端代碼的部署
后端工程采用了springboot框架技術(shù),核心的配置放在了application.properties里面:
server.port=7089 application.invoker.name=iubbo-invoker-proxyspring.datasource.druid.password= spring.datasource.druid.username= spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/iubbox-proxy spring.datasource.druid.driver-class-name=com.mysql.jdbc.Drivermybatis-plus.configuration.map-underscore-to-camel-case=truespring.redis.port=6379 spring.redis.host= 127.0.0.1然后倒入建表的sql:
CREATE TABLE `t_dubbo_invoke_req_record` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) DEFAULT NULL COMMENT '用戶id',`arg_json` varchar(2500) COLLATE utf8_bin DEFAULT NULL COMMENT 'dubbo請求參數(shù)',`create_time` datetime DEFAULT CURRENT_TIMESTAMP,`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;CREATE TABLE `t_user` (`id` int(9) NOT NULL AUTO_INCREMENT,`username` varchar(60) COLLATE utf8_bin DEFAULT NULL,`password` varchar(30) COLLATE utf8_bin DEFAULT NULL,`createTime` datetime DEFAULT CURRENT_TIMESTAMP,`updateTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;- t_user 用于記錄相關(guān)的用戶賬號,方便于保存用戶賬號信息。
- t_dubbo_invoke_req_record 用于記錄請求dubbo接口的用例信息。
最后就是啟動(dòng)入口類org.iubbo.proxy.DubboInvokerApplication
啟動(dòng)成功截圖
關(guān)于本工具的使用教程
本工具區(qū)分了已登錄賬號和未登錄賬號兩類角色,已登錄賬號的使用者可以對請求的用例進(jìn)行保存,方便下一次提取信息,未登錄賬號雖然沒有保存用例的功能,但是不影響其使用本工具進(jìn)行測試。
首頁截圖:
1.指定zk地址
在測試dubbo接口之前,我們通常都會(huì)去拉取一遍zk上邊的service地址,操作如下圖:
先在文本框點(diǎn)擊,輸入和js配置有關(guān)的字母或數(shù)字會(huì)有模糊匹配的選項(xiàng)供各位選擇:
選中了zk地址之后,再去點(diǎn)擊拉取zk地址按鈕(以前有同事剛接觸這個(gè)工具的時(shí)候,這里被繞蒙了~~)
拉取zk地址的時(shí)候,后端會(huì)根據(jù)文章上邊提到的js配置里面的ip值去拉取,拉取成功會(huì)有相關(guān)提示:
接下來便是篩選dubbo服務(wù)地址的功能,在拉取zk地址下方有一個(gè)下拉框,這里面此時(shí)應(yīng)當(dāng)會(huì)被注入zk上所有dubbo服務(wù)列表的名稱。
選擇對于的service名稱,然后在右邊的“請輸入名稱”文本框中輸入該接口對應(yīng)的方法名稱(一定要名稱對應(yīng))
這里以調(diào)用MsgService的sendMsg方法為例:
然后配置相關(guān)的參數(shù)和名稱
選擇對應(yīng)參數(shù)類型和值:
最后發(fā)起請求:
在基礎(chǔ)參數(shù)配置項(xiàng)的旁邊,還有一個(gè)模塊是專門配置consumer端的額外內(nèi)容,這些參數(shù)項(xiàng)都是在平時(shí)工作中可能會(huì)應(yīng)用到的場景,需要的時(shí)候可以進(jìn)行配置。這里面也配備了工作中非常常用的直連選項(xiàng)。
我個(gè)人最喜歡使用的還是直連功能,因?yàn)樵陂_發(fā)過程中,經(jīng)常需要直連機(jī)器做自測:
假如說希望保存自己曾經(jīng)發(fā)送過的dubbo測試用例,那么你只需先進(jìn)行登錄賬號,賬號直接往t_user表里面寫入一條數(shù)據(jù)即可:
在首頁的右上方有個(gè)進(jìn)入登錄頁面按鈕:
點(diǎn)擊登錄
如何保存請求用例:
保存用例這里有些小瑕疵,需要用戶手動(dòng)刷新下頁面才能顯示保存的用例信息:
點(diǎn)擊選用參數(shù),則頁面又會(huì)重新回顯之前使用過的請求信息。
特殊參數(shù)請求
該工具支持多種開發(fā)中常見的參數(shù)格式調(diào)用,目前支持常規(guī)參數(shù)
ps:注意這里的參數(shù)格式需要和dubbo方法里面的參數(shù)格式按照相同順序相同類型做映射,否則后端程序會(huì)返回找不到對應(yīng)方法
Java的常用基本類型數(shù)據(jù):boolean,short,int,long,double,char,float
Java中常用的包裝類數(shù)據(jù):
java.lang.String, java.lang.Integer, java.lang.Object, java.util.List, java.lang.Class, java.lang.Long, java.lang.Boolean, java.util.Map, java.util.Date, java.lang.Float, java.lang.Double對于簡單的數(shù)據(jù)類型傳遞
多參數(shù),中英文混合傳遞
List類型參數(shù)的傳遞
Class類型的參數(shù)傳遞
Map類型的參數(shù)傳遞
Date類型的參數(shù)傳遞
自定義對象參數(shù)傳參
如果在實(shí)際應(yīng)用中遇到了這種場景,需要調(diào)用以下的接口,那么這個(gè)使用就需要使用自定義參數(shù)了:
復(fù)雜類型自定義參數(shù)傳遞
假設(shè)遇到了List類型參數(shù),而且傳輸?shù)腖ist里面包含有自定義對象,例如下邊這種類型:
List<UserDTO> testUserDtoList(List<UserDTO> userDTOList,Class clazz);那么此時(shí)的傳參案例可以像下邊這樣來寫:
易錯(cuò)點(diǎn)歸納
注意請求的參數(shù)順序要和方法對應(yīng)的參數(shù)順序一致,假設(shè)服務(wù)的方法定義如下:
<T> List<T> getList(List<Long> var1, Class<T> var2);那么傳入的參數(shù)就必須先填List參數(shù),再寫Class參數(shù)。
- 正確示例:(先寫了List參數(shù),再寫Class參數(shù))
- 錯(cuò)誤示例:(先寫了Class參數(shù),再寫List參數(shù))
作者:Java知音
原文鏈接:https://mp.weixin.qq.com/s/RczGYu9stYZbhUm6ON31pg
總結(jié)
以上是生活随笔為你收集整理的dubbo的端口地址和ip写在那_开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ linux 环境,C++ 环境设
- 下一篇: html中的ppt文字不清晰,HTML页