zoukankan      html  css  js  c++  java
  • rpc(二、springboot2.3.2+dubbo2.7.7)

    结构

     服务端,消费端,接口工程

    zookeeper

    dubbo建议版本3.4.X

    父项目

    创建父项目,删除项目下的src文件

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.bsoft</groupId>
        <artifactId>familydoctor</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>familydoctor</name>
        <description>Demo project for Spring Boot</description>
        <packaging>pom</packaging>
    
        <properties>
            <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
            <dubbo.version>2.7.7</dubbo.version>
        </properties>
    
        <dependencyManagement>
            <dependencies>
    
                <!-- Spring Boot -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring-boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- Apache Dubbo  -->
                <dependency>
                    <groupId>org.apache.dubbo</groupId>
                    <artifactId>dubbo-dependencies-bom</artifactId>
                    <version>${dubbo.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <dependency>
                    <groupId>org.apache.dubbo</groupId>
                    <artifactId>dubbo</artifactId>
                    <version>${dubbo.version}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>javax.servlet</groupId>
                            <artifactId>servlet-api</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>log4j</groupId>
                            <artifactId>log4j</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
    
            </dependencies>
        </dependencyManagement>
    
        <modules>
            <module>familydoctor_api</module>
            <module>familydoctor_server</module>
            <module>familydoctor_consumer</module>
        </modules>
    
    </project>

    子项目-接口工程

     创建familydoctor_api子模块项目,包含传递的接口和实体。

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.bsoft</groupId>
            <artifactId>familydoctor</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.bsoft</groupId>
        <artifactId>familydoctor_api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>familydoctor_api</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
    
        </dependencies>
    
    </project>

    UserService

    package com.bsoft.api.user;
    
    import com.bsoft.entity.User;
    
    public interface UserService {
        public User getUserById(String id);
    }

    User

    package com.bsoft.entity;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
        private String id;
        private String name;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    子项目-服务端

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.bsoft</groupId>
            <artifactId>familydoctor</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.bsoft</groupId>
        <artifactId>familydoctor_server</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>familydoctor_server</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <!-- 移除springboot本身的logback依赖 -->
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!-- 引入log4j2依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-zookeeper</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>com.bsoft</groupId>
                <artifactId>familydoctor_api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
    
            <!-- json -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.28</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    application.yml

    server:
      port: 8001
    dubbo:
      scan:
        base-packages: com.bsoft.api # 接口扫描地址
      protocol:
        name: dubbo
        port: -1 # dubbo协议 端口随机
      registry:
        address: zookeeper://10.32.16.179:2181 # zookeeper连接地址
        timeout: 10000 # 超时时间
      metadata-report:
        address: zookeeper://10.32.16.179:2181 # 数据元中心
    
    
    
    demo:
      service:
        version: 1.0.0
    spring:
      application:
        name: test-producer

    UserServiceImpl

    package com.bsoft.api.impl;
    
    import com.bsoft.api.user.UserService;
    import com.bsoft.entity.User;
    import org.apache.dubbo.config.annotation.DubboService;
    import org.springframework.stereotype.Component;
    
    @Component
    @DubboService
    public class UserServiceImpl implements UserService {
    
        @Override
        public User getUserById(String id) {
            User user = new User();
            user.setId(id);
            user.setName("name"+id);
            return user;
        }
    }

    @DubboService是2.7.7的新注解,原先使用的@Service被废弃。

    子项目-消费端

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.bsoft</groupId>
            <artifactId>familydoctor</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.bsoft</groupId>
        <artifactId>familydoctor_consumer</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>familydoctor_consumer</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <!-- 移除springboot本身的logback依赖 -->
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!-- 引入log4j2依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-zookeeper</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>com.bsoft</groupId>
                <artifactId>familydoctor_api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
    
            <!-- json -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.28</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    application.yml

    server:
      port: 8002
    dubbo:
      registry:
        address: zookeeper://10.32.16.179:2181
        timeout: 10000
    #  consumer:
    #    check: false
      metadata-report:
        address: zookeeper://10.32.16.179:2181
    
    demo:
      service:
        version: 1.0.0
    
    
    spring:
      application:
        name: test-comsumer

    UserController

    package com.bsoft.controller;
    
    import com.bsoft.api.user.UserService;
    import com.bsoft.entity.User;
    import org.apache.dubbo.config.annotation.DubboReference;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("user")
    public class UserController {
    
    
        @DubboReference
        private UserService userService;
    
        @GetMapping("getUserById/{id}")
        public User getUserById(@PathVariable(value = "id") String id){
            return userService.getUserById(id);
        }
    }

    @DubboReference是2.7.7的新注解,原先使用的@Reference被废弃。

  • 相关阅读:
    Django组件-cookie与session
    Js获取标签高度
    js动态添加事件
    div 显示与隐藏
    JS字符串截取
    网页事件
    js_event.keycode值大全
    DOS删除服务
    判断字符串的编码
    《把时间当作朋友》读书笔记(二)-- 困境
  • 原文地址:https://www.cnblogs.com/Unlimited-Blade-Works/p/13489637.html
Copyright © 2011-2022 走看看