Dubbo入门使用(三)-- SpringBoot整合Dubbo

1、创建三个SpringBoot项目,分别是服务提供者、服务消费者和接口。

2、在boot-order-consumer和boot-user-service-provider中分别依赖gmall-interface

<dependency>
            <groupId>com.dhu.gmall</groupId>
            <artifactId>gmall-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

3、导入依赖

(1)dubbo github :https://github.com/apache/dubbo

 

·引入 dubbo-starter

<!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>

 ·使用zookeeper客户端 参考官方文档:http://dubbo.apache.org/zh-cn/docs/user/references/registry/zookeeper.html

注意:在2.7.x的版本中已经移除了zkclient的实现,如果要使用zkclient客户端,需要自行拓展

使用 curator 客户端

从 2.3.0 版本开始支持可选 curator 实现。Curator 是 Netflix 开源的一个 Zookeeper 客户端实现。

<!--引入dubbo-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.5</version>
        </dependency>
        <!--注册中心使用的是zookeeper,需要引入操作zookeeper的客户端-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.13.0</version>
        </dependency>

4、配置

以前的项目工程,我们需要XML配置文件来配置,springboot项目在application.properties配置。

dubbo.application.name=boot-user-service-provider
dubbo.registry.address=192.168.93.101:2181
dubbo.registry.protocol=zookeeper

dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

dubbo.monitor.protocol=registry

注意:需要添加 dubbo的@Service 注解来暴露服务提供方的dubbo服务

import com.alibaba.dubbo.config.annotation.Service;
import com.dhu.bean.UserAddress;
import com.dhu.service.OrderService;
import com.dhu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 1、将服务提供者注册到注册中心(暴露服务)
 *  1)导入dubbo依赖
 *  2)配置服务提供者
 * 2、让服务消费者去注册中心订阅服务服务提供者的服务地址
 * @author zhou
 * @create 2020/5/22
 */
@Service //暴露服务
@Component
public class OrderServiceImpl implements OrderService {

    @Autowired
    private UserService userService;

5、springboot的启动类使用注解@EnableDubbo

/**
 * 1.导入依赖
 *  1)导入dubbo-starter
 *  2)导入dubbo的其他依赖
 * 2.
 */
@EnableDubbo //开启基于注解的dubbo功能
@SpringBootApplication
public class BootUserServiceProviderApplication {

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

 5、启动springboot主程序,同时启动dubbo管理管理控制台

 

 

6、配置服务的消费方

(1) application.properties

dubbo.application.name=boot-order-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.93.101:2181

dubbo.monitor.protocol=registry

(2)使用dubbo的@Reference注解,服务消费方会自动从注册中心发现服务,消费服务

@Service
public class OrderServiceImpl implements OrderService {

    //@Autowired
    @Reference //远程调用UserService服务
    private UserService userService;

    @Override
    public List<UserAddress> initOrder(String userId) {
        //1.查询用户的收获地址
        List<UserAddress> list = userService.getUserAddressList(userId);
        for (UserAddress userAddress : list) {
            System.out.println(userAddress);
        }
        return list;
    }
}

7、 编写消费方的Controller

@Controller
public class OrderController {

    @Autowired
    private OrderService orderService;

    @RequestMapping("/initOrder")
    @ResponseBody //以json的方式写出去,返回到页面
    public List<UserAddress> initOrder(@RequestParam("uid") String userId) {
        List<UserAddress> list = orderService.initOrder(userId);
        return list;
    }
}

8、由于监控中心端口为8080,所有需要修改消费方的tomcat默认端口号

 ·启动监控中心

 

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读