天天看點

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

dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用
dubbo consumer 端口_基于Springboot+Dubbo+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: true
           

Provider配置如下:

# 配置端口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: true
           

4 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 */@[email protected]("/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會有對應的服務

dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用

使用Postman通路Consumer測試接口

dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用

8 項目源碼

碼雲:https://gitee.com/liselotte/spring-boot-dubbo-demoGitHub:https://github.com/xuyulong2017/my-java-demo
           
dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用

如有收獲請劃至底部

點選“在看”支援,謝謝!

dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用

關注馬士兵

每天分享技術幹貨

dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用

點贊是最大的支援 

dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式實作微服務調用