javascript
dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式实现微服务调用
1 項(xiàng)目結(jié)構(gòu)
|-- spring-boot-dubbo-demo (父級(jí)工程) |-- spring-boot-dubbo-base (基礎(chǔ)工程) |-- spring-boot-dubbo-consumer (消費(fèi)者) |-- spring-boot-dubbo-provider (生產(chǎn)者)SpringBoot版本:2.2.0
Dubbo版本:2.7.0
Nacos版本:1.1.4
2?啟動(dòng)Nacos注冊(cè)中心
Nacos官方文檔:
https://nacos.io/zh-cn/docs/quick-start.html
默認(rèn)賬號(hào)密碼是nacos
3?搭建項(xiàng)目
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: # 配置服務(wù)信息 application: name: dubbo-consumer # 禁用QOS同一臺(tái)機(jī)器可能會(huì)有端口沖突現(xiàn)象 qos-enable: false qos-accept-foreign-ip: false # 配置注冊(cè)中心 registry: address: nacos://127.0.0.1:8848 # 設(shè)置超時(shí)時(shí)間 consumer: timeout: 4000spring: main: # 解決Bean重復(fù)定義問題 allow-bean-definition-overriding: trueProvider配置如下:
# 配置端口server: port: 8861dubbo: # 配置服務(wù)信息 application: name: dubbo-provider # 禁用QOS同一臺(tái)機(jī)器可能會(huì)有端口沖突現(xiàn)象 qos-enable: false qos-accept-foreign-ip: false # 配置注冊(cè)中心 registry: address: nacos://127.0.0.1:8848 # 設(shè)置協(xié)議-協(xié)議由提供方指定消費(fèi)方被動(dòng)接受 protocol: name: dubbo port: 20880spring: main: # 解決Bean重復(fù)定義問題 allow-bean-definition-overriding: true4?Base工程編寫
編寫DTO
/** * RPC接口DTO * 注意這里要實(shí)現(xiàn)序列化接口 * @Author Sans * @CreateTime 2019/11/6 23:04 */@Datapublic class ProviderTestDTO implements Serializable { // ID private int id; // 名字 private String name; // 序號(hào) private Integer number;}編寫Serivce
/** * RPC接口 * @Author Sans * @CreateTime 2019/11/6 23:03 */public interface IProviderService { List queryList();}編寫返回結(jié)果類
/** * 返回結(jié)果類 * 這里采用構(gòu)建者模式構(gòu)建 * 優(yōu)點(diǎn):1.私有化構(gòu)造器訪問范圍小 2.參數(shù)可靈活設(shè)置便于管理 * @Author Sans * @CreateTime 2019/11/7 18:59 */@Getterpublic class ResultVO<T> implements Serializable { /** * 返回碼 */ private int code; /** * 返回信息 */ private String message; /** * 返回?cái)?shù)據(jù) */ private T data; /** 私有化構(gòu)造器 **/ 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工程編寫
在啟動(dòng)類上面不要忘記加上@EnableDubbo注解
@EnableDubbo //開啟Dubbo的注解支持@SpringBootApplicationpublic class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); }}實(shí)現(xiàn)IProviderService接口,注意這里的Serivce引用的是dubbo的包
/** * 生產(chǎn)者Dubbo接口實(shí)現(xiàn) * @Author Sans * @CreateTime 2019/11/6 23:01 */@Servicepublic class ProviderServiceImpl implements IProviderService { @Override public List queryList() { // 初始化數(shù)據(jù) ProviderTestDTO testDTO1 = new ProviderTestDTO(); testDTO1.setId(1); testDTO1.setName("學(xué)生"); testDTO1.setNumber(100); ProviderTestDTO testDTO2 = new ProviderTestDTO(); testDTO2.setId(2); testDTO2.setName("教師"); testDTO2.setNumber(101); // 組裝數(shù)據(jù) Listlist = new ArrayList<>(); list.add(testDTO1); list.add(testDTO2); return list; }}6?Consumer工程編寫
和Provider工程的啟動(dòng)類一樣,加上@EnableDubbo注解
@EnableDubbo //開啟dubbo的注解支持@SpringBootApplicationpublic class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); }}編寫測(cè)試接口
/** * 消費(fèi)測(cè)試接口 * @Author Sans * @CreateTime 2019/11/6 23:09 */@RestController@RequestMapping("/consumer")public class ConsumerController { // Dubbo遠(yuǎn)程調(diào)用注解 @Reference private IProviderService providerService; @RequestMapping(value = "/list",method = RequestMethod.GET) public ResultVO getList(){ // 遠(yuǎn)程調(diào)用 List providerTestDTOList = providerService.queryList(); return new ResultVO.Builder<>().code(200).message("success").data(providerTestDTOList).build(); }}7?測(cè)試
啟動(dòng)Provider工程和Consumer工程,這個(gè)時(shí)候Nacos會(huì)有對(duì)應(yīng)的服務(wù)
使用Postman訪問Consumer測(cè)試接口
8?項(xiàng)目源碼
碼云:https://gitee.com/liselotte/spring-boot-dubbo-demoGitHub:https://github.com/xuyulong2017/my-java-demo如有收獲請(qǐng)劃至底部
點(diǎn)擊“在看”支持,謝謝!
關(guān)注馬士兵
每天分享技術(shù)干貨
點(diǎn)贊是最大的支持?
總結(jié)
以上是生活随笔為你收集整理的dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式实现微服务调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql myisam存储引擎_MyS
- 下一篇: tfs java开发需要jar_使用Sp