1. 改造Dubbo项目

1.1 搭建provider模块

Untitled

  1. 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> <http://maven.apache.org/xsd/maven-4.0.0.xsd>">
        <parent>
            <artifactId>Dubbo3-Demo</artifactId>
            <groupId>com.doli</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>provider</artifactId>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.3.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>3.0.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-zookeeper</artifactId>
                <version>3.0.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-rpc-dubbo</artifactId>
                <version>3.0.7</version>
            </dependency>
            <dependency>
                <groupId>com.doli</groupId>
                <artifactId>common</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    
    </project>
    
  2. UserController

    @RestController
    public class UserController {
    
        @Autowired
        private UserServiceImpl userService;
    
        @GetMapping("/user")
        public String getUser(){
            return userService.getUser();
        }
    
    }
    
  3. UserServiceImpl

    @DubboService
    public class UserServiceImpl implements UserService {
        public String getUser() {
            return "dubbo is learning!!!!";
        }
    }
    
  4. ProviderApplication

    @SpringBootApplication
    @EnableDubbo
    public class ProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(ProviderApplication.class);
        }
    }
    
  5. application.properties

    dubbo.application.name=provider-application
    
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=20880
    
    dubbo.registry.address=zookeeper://192.168.189.128:2181
    

1.2 搭建consumer模块

Untitled

  1. 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> <http://maven.apache.org/xsd/maven-4.0.0.xsd>">
        <parent>
            <artifactId>Dubbo3-Demo</artifactId>
            <groupId>com.doli</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>consumer</artifactId>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.3.7.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>3.0.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-zookeeper</artifactId>
                <version>3.0.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-rpc-dubbo</artifactId>
                <version>3.0.7</version>
            </dependency>
            <dependency>
                <groupId>com.doli</groupId>
                <artifactId>common</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    
    </project>
    
  2. OrderController

    @RestController
    public class OrderController {
    
        @Autowired
        private OrderService orderService;
    
        @GetMapping("/order")
        public String getUser(){
            return orderService.getOrder();
        }
    }
    
  3. OrderService

    @Service
    public class OrderService {
        @DubboReference
        private UserService userService;
    
        public String getOrder(){
            String user = userService.getUser();
            return user;
        }
    }
    
  4. ConsumerApplication

    @SpringBootApplication
    @EnableDubbo
    public class ConsumerApplication {
    
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class);
        }
    }
    
  5. application.properties

    server.port=8081
    dubbo.application.name=consumer-application
    dubbo.registry.address=zookeeper://192.168.189.128:2181
    

1.3 搭建common模块

Untitled

  1. UserService

    public interface UserService {
    	publicString getUser();
    }