dubbo入门教程:基于dubbo实现服务之前调用

Dubbo学习笔记

1.改造项目

1.1引入依赖pom.xml

        <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-rpc-dubbo</artifactId>
            <version>3.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-zookeeper</artifactId>
            <version>3.0.7</version>
        </dependency>

1.2配置application.yaml

dubbo:
  application:
    name: provider-application
  protocol:
    name: dubbo
    port: 20880
  registry:
    address: zookeeper://127.0.0.1:2181
  • 注:调用和被调用方都需要写这个配置

1.3 将接口提取到公共的模块

image-20220704212117407

1.4 依赖

  • provider实现common里面的接口
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
  • consumer依赖common的jar包

           <dependency>
                <groupId>org.example</groupId>
                <artifactId>common</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    
  • consumer启动类,provider启动类开启Dubbo:@EnableDubbo

@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

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

  • 调用:@DubboReference(version="")
@Service
public class OrderService {

    @Autowired
    private RestTemplate restTemplate;

    @DubboReference(version = "1.0")
    private UserService userService;

    @Value("${user_url}")
    private String url;

    @Value("${port}")
    private Integer port;

    public String getOrder() {
        String address = url + ":" + port + "/user";
        System.out.println(address);
        return restTemplate.getForObject(address, String.class);
    }


    public String getOrderDubbo(){
        return userService.getUser();
    }
}
posted @ 2022-07-04 21:34  明&天  阅读(96)  评论(0编辑  收藏  举报