當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式实现微服务调用
生活随笔
收集整理的這篇文章主要介紹了
dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式实现微服务调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天跟大家分享基于Springboot+Dubbo+Nacos 注解方式實現微服務調用的知識。
1 項目結構
|-- spring-boot-dubbo-demo (父級工程) |-- spring-boot-dubbo-base (基礎工程) |-- spring-boot-dubbo-consumer (消費者) |-- spring-boot-dubbo-provider (生產者)SpringBoot版本:2.2.0
Dubbo版本:2.7.0
Nacos版本:1.1.4
2?啟動Nacos注冊中心
Nacos官方文檔:
https://nacos.io/zh-cn/docs/quick-start.html
默認賬號密碼是nacos
3?搭建項目
Consumer和Provider的Maven依賴如下:
<dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>com.sansgroupId> <artifactId>spring-boot-dubbo-baseartifactId> <version>0.0.1-SNAPSHOTversion> dependency> <dependency> <groupId>org.apache.dubbogroupId> <artifactId>dubbo-spring-boot-starterartifactId> <version>2.7.0version> dependency> <dependency> <groupId>org.apache.dubbogroupId> <artifactId>dubboartifactId> <version>2.7.0version> dependency> <dependency> <groupId>org.apache.dubbogroupId> <artifactId>dubbo-registry-nacosartifactId> <version>2.7.1version> dependency> <dependency> <groupId>com.alibaba.nacosgroupId> <artifactId>nacos-clientartifactId> <version>1.0.0version> dependency>dependencies>Consumer配置如下:
# 配置端口server: port: 8862dubbo: # 配置服務信息 application: name: dubbo-consumer # 禁用QOS同一臺機器可能會有端口沖突現象 qos-enable: false qos-accept-foreign-ip: false # 配置注冊中心 registry: address: nacos://127.0.0.1:8848 # 設置超時時間 consumer: timeout: 4000spring: main: # 解決Bean重復定義問題 allow-bean-definition-overriding: trueProvider配置如下:
# 配置端口server: port: 8861dubbo: # 配置服務信息 application: name: dubbo-provider # 禁用QOS同一臺機器可能會有端口沖突現象 qos-enable: false qos-accept-foreign-ip: false # 配置注冊中心 registry: address: nacos://127.0.0.1:8848 # 設置協議-協議由提供方指定消費方被動接受 protocol: name: dubbo port: 20880spring: main: # 解決Bean重復定義問題 allow-bean-definition-overriding: true4?Base工程編寫
編寫DTO
/** * RPC接口DTO * 注意這里要實現序列化接口 * @Author Sans * @CreateTime 2019/11/6 23:04 */@Datapublic class ProviderTestDTO implements Serializable { // ID private int id; // 名字 private String name; // 序號 private Integer number;}編寫Serivce
/** * RPC接口 * @Author Sans * @CreateTime 2019/11/6 23:03 */public interface IProviderService { List queryList();}編寫返回結果類
/** * 返回結果類 * 這里采用構建者模式構建 * 優點:1.私有化構造器訪問范圍小 2.參數可靈活設置便于管理 * @Author Sans * @CreateTime 2019/11/7 18:59 */@Getterpublic class ResultVO<T> implements Serializable { /** * 返回碼 */ private int code; /** * 返回信息 */ private String message; /** * 返回數據 */ private T data; /** 私有化構造器 **/ private ResultVO() {} private ResultVO(ResultVO resultVO) { this.code = resultVO.code; this.message = resultVO.message; this.data = resultVO.data; } /** * Build */ public static class Builder<T>{ private ResultVO resultVO; public Builder() { resultVO = new ResultVO<>(); } public Builder code(int code){ resultVO.code = code; return this; } public Builder message(String message){ resultVO.message = message; return this; } public Builder data(T data){ resultVO.data = data; return this; } public ResultVO build(){ return new ResultVO<>(resultVO); } }}5?Provider工程編寫
在啟動類上面不要忘記加上@EnableDubbo注解
@EnableDubbo //開啟Dubbo的注解支持@SpringBootApplicationpublic class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); }}實現IProviderService接口,注意這里的Serivce引用的是dubbo的包
/** * 生產者Dubbo接口實現 * @Author Sans * @CreateTime 2019/11/6 23:01 */@Servicepublic class ProviderServiceImpl implements IProviderService { @Override public List queryList() { // 初始化數據 ProviderTestDTO testDTO1 = new ProviderTestDTO(); testDTO1.setId(1); testDTO1.setName("學生"); testDTO1.setNumber(100); ProviderTestDTO testDTO2 = new ProviderTestDTO(); testDTO2.setId(2); testDTO2.setName("教師"); testDTO2.setNumber(101); // 組裝數據 Listlist = new ArrayList<>(); list.add(testDTO1); list.add(testDTO2); return list; }}6?Consumer工程編寫
和Provider工程的啟動類一樣,加上@EnableDubbo注解
@EnableDubbo //開啟dubbo的注解支持@SpringBootApplicationpublic class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); }}編寫測試接口
/** * 消費測試接口 * @Author Sans * @CreateTime 2019/11/6 23:09 */@RestController@RequestMapping("/consumer")public class ConsumerController { // Dubbo遠程調用注解 @Reference private IProviderService providerService; @RequestMapping(value = "/list",method = RequestMethod.GET) public ResultVO getList(){ // 遠程調用 List providerTestDTOList = providerService.queryList(); return new ResultVO.Builder<>().code(200).message("success").data(providerTestDTOList).build(); }}7?測試
啟動Provider工程和Consumer工程,這個時候Nacos會有對應的服務
使用Postman訪問Consumer測試接口
8?項目源碼
碼云:https://gitee.com/liselotte/spring-boot-dubbo-demoGitHub:https://github.com/xuyulong2017/my-java-demo如有收獲請劃至底部
點擊“在看”支持,謝謝!
關注馬士兵
每天分享技術干貨
點贊是最大的支持?
總結
以上是生活随笔為你收集整理的dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式实现微服务调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql myisam存储引擎_MyS
- 下一篇: mysql数据库导入外部数据乱码么_解决