dubbo learning (three) create a springboot test project

Create springboot test project

1. Port number sorting

project The port number
zookeeper 2181
dubbo-admin-server 8081
dubbo-admin-ui 8082
user-dubbo-server 8083
order-dubbo-server 8084

2. Project structure

dubbo-parent
|----- interface-dubbo
|----- user-dubbo-server
|----- order-dubbo-server

  • interface-dubbo: used to write interface
  • user-dubbo-server: Provide user services to the outside world and serve as the service provider in this test
  • order-dubbo-server: provide order services to the outside world, and serve consumers in this test
  • order-dubbo-server and user-dubbo-server both rely on interface-dubbo

3. Create interface-dubbo

3.1 Create a normal springboot project, the steps are omitted

3.2 Create package
com.jxs.interfacedubbo.user

3.3 Create interface: UserService

package com.jxs.interfacedubbo.user;

import java.util.List;
import java.util.Map;

public interface UserService {
    
    

    /**
     * @param id
     * 查询用户列表
     * @return
     */
    public List<Map> getUserList(String id);
}

4. Create user-dubbo-server (producer)

4.1 Create a normal springboot project, the steps are omitted

4.1 Introducing dependencies

 <!-- Dubbo Spring Boot Starter -->
 <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>2.7.7</version>
  </dependency>
  <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.5.3-beta</version>
  </dependency>
  <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-framework</artifactId>
      <version>5.1.0</version>
  </dependency>
  <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-recipes</artifactId>
      <version>5.1.0</version>
  </dependency>

4.3 The @DubboService annotation is recommended to create a higher version of the service

package com.jxs.userdubboserver.service;

import com.jxs.interfacedubbo.user.UserService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@DubboService
@Service
public class UserServiceImpl implements UserService {
    
    

    /**
     * @param id 查询用户列表
     * @return
     */
    @Override
    public List<Map> getUserList(String id) {
    
    
        List<Map> returnList = new ArrayList<>();

        Map<String,Object> item = new HashMap<>();
        item.put("id",id);
        item.put("name","zhangsan");
        item.put("password","123456");
        returnList.add(item);
        return returnList;
    }
}

4.4 Modify the configuration file

server.port=8083
#指定当前服务名
dubbo.application.name=user-provider

# 配置注册中心 zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

# <!-- 用dubbo协议在20880端口暴露服务 -->
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

dubbo.monitor.protocol=registry

4.5 Service start

Check if there is registration in dubbo-admin
Insert picture description here

5. Create order-dubbo-server (consumer)

5.1 Create a normal springboot project, the steps are omitted

5.2 Introducing dependencies

 <!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.5.3-beta</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>5.1.0</version>
        </dependency>

5.3 Start dubbo and configure scan annotation

@SpringBootApplication
@DubboComponentScan
@EnableDubbo
public class OrderDubboServerApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(OrderDubboServerApplication.class, args);
    }

}

5.4 Add controller class for invoking test

@Controller
@RequestMapping("/order")
public class OrderController {
    
    

    @Autowired
    private OrderService orderService;

    @ResponseBody
    @GetMapping("/getUserInfo")
    public List<Map> getUserInfo(@RequestParam("id") String id) {
    
    
        return orderService.getUserInfo(id);
    }

}

5.5 New service implementation class

@Service
public class OrderServiceImpl implements OrderService {
    
    

    /**
     * 服务消费
     */
    @DubboReference
    private UserService userService;

    @Override
    public List<Map> getUserInfo(String id) {
    
    
        return userService.getUserList(id);
    }
}

5.6 Modify configuration file

#服务端口号
server.port=8084

dubbo.application.name=order-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.consumer.timeout=3000

5.7 Start service
Insert picture description here

6. Test

6.1访问http://localhost:8084/order/getUserInfo?id=1

Return
[{"password":"123456","name":"zhangsan","id":"1"}]

Guess you like

Origin blog.csdn.net/jinian2016/article/details/109558287