SpringBoot集成Dubbo

SpringBoot集成Dubbo

在linuxg中启动zookeeper服务
zookeeper安装步骤详见linux安装zookeeper

在idea中创建一个Springboot项目作为服务提供者

导入相关依赖(注意zookeeper依赖的版本一定要和自己虚拟中的服务版本一致,否则会导致版本问题)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<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.4.8</version>
</dependency>

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.12.0</version>
</dependency>

编写application.properties配置文件

# 为了保证项目端口不冲突 需要修改一个端口
server.port=8888

# 服务名称 不能跟别的服务提供者重复
dubbo.application.name=provider

# 指定注册中心
dubbo.registry.protocol=zookeeper

# 注册中心地址
dubbo.registry.address=192.168.128.128:2181

# 协议固定写dubbo 以及服务暴露的端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

# 设置超时时间
dubbo.registry.timeout=30000
dubbo.config-center.timeout=30000


# 扫描包的路径
dubbo.scan.base-packages=com.test.service.impl

编写要暴露的接口以及对应的实现类

接口

package com.test.service;
public interface UserService {
    String getMsg();
}

实现类

package com.test.service.impl;

import com.zhiyou.service.UserService;
import org.apache.dubbo.config.annotation.DubboService;

@DubboService  //表示这个接口,同时也可以将对象注入到IOC容器中
public class UserServiceimpl implements UserService {
    @Override
    public String getMsg() {
        System.out.println("----------------------------被调用了----------------------------");
        return "idea中的服务提供方的service实现";
    }
}

在启动类中加入 @EnableDubbo 注解 并启动 提供服务

@EnableDubbo  // 代表开启Dubbo服务
@SpringBootApplication
public class DubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }
}
在idea中再创建一个新的Springboot项目作为服务消费者

依赖与服务提供者相同

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<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.4.8</version>
</dependency>

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.12.0</version>
</dependency>

编写配置文件

# 服务名称 不能跟别的服务提供者重复
dubbo.application.name=consumer

# 指定注册中心
dubbo.registry.protocol=zookeeper

# 注册中心地址
dubbo.registry.address=192.168.139.131:2181

# 协议固定写dubbo 以及服务暴露的端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
# 设置超时时间
dubbo.registry.timeout=30000
dubbo.config-center.timeout=30000

编写与服务提供者完全相同的接口(不需要实现类)

package com.test.service;
public interface UserService {
    String getMsg();
}

编写controller调用服务

注意此处用的是 @DubboReference注解,而不再是@Autowired

@RestController
public class UserController {

    @DubboReference
    UserService userService;

    @RequestMapping("hello")
    public String hello(){
        System.out.println(userService.getMsg());
        return userService.getMsg();
    }

}

也在启动类中加上@EnableDubbo注解并启动服务

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

然后先启动服务提供者项目,在启动服务消费者项目,访问消费者的controller,发现成功调用服务提供者。

http://localhost8080/hello
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值