spring boot + Dubbo + Redis注册中心 实现RPC调用
众所周知 dubbo推荐使用zookeeper做服务发现,但今天我们来使用另一种Redis做服务发现 这样省去了维护两种服务的经历 并且可以用作生产
POM
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
dubbo server 服务提供者 application.yml
spring:
application:
name: dubbo-producer
dubbo:
provider:
threadpool: fixed
threads: 2000
application:
id: server-producer
name: server-producer
qos-enable: true
qos-port: 22222
qos-accept-foreign-ip: false
registry:
# 使用redis 注册中心暴露服务地址
address: redis://127.0.0.1:6379
protocol:
name: dubbo
# 高效序列化 kryo, fst
#用dubbo协议在20880端口暴露服务
port: 20884
#性能监控中心地址
monitor:
protocol: dubbo
address: 127.0.0.1:7070
scan: cn.itcast.service
server:
port: 8888
dubbo服务提供者中创建service接口
public interface IDubboDemoService {
String helloDubbo();
}
service接口实现
import com.alibaba.dubbo.config.annotation.Service;
@Service(version = "2.0.0")
public class IDubboDemoServiceImpl implements IDubboDemoService {
@Override
public String helloDubbo() {
return "hello dubbo, 我是提供者";
}
}
dubbo client 服务消费者 application.yml
spring:
application:
name: dubbo-consumer
dubbo:
provider:
threadpool: fixed
threads: 2000
application:
# id: database-consumer
name: database-consumer
# qos-enable: true
# qos-port: 33333
# qos-acceptforeign-ip: false
registry:
#使用redis注册中心暴露服务地址
address: redis://127.0.0.1:6379
monitor:
# protocol: dubbo
address: 127.0.0.1:7070
server:
port: 9988
dubbo client 服务消费者service接口要与提供者接口名称相同
public interface IDubboDemoService {
String helloDubbo();
}
@Service
public class IDubboDemoServiceImpl implements IDubboDemoService {
@Override
//该内容随便写
public String helloDubbo() {
return "hello dubbo, I'm server!";
}
}
@Service 来自spring依赖
创建自己的接口
public interface IDemoService {
String test();
}
@Service
public class DemoServiceImpl implements IDemoService {
//调用dubbo服务
@Reference(version = "2.0.0")
public IDubboDemoService dubboDemoService;
@Override
public String test() {
return dubboDemoService.helloDubbo();
}
}
启动类加上@EnableDubboConfiguration
这是使用dubbo-spring-boot-starter的新特性 必须要有
@Reference来自 dubbo依赖
伪代码
@Autowired(required = false)
private IDemoService demoService;
@GetMapper("/get")
demoService.test
即可返回“hello dubbo, 我是提供者”
gitee项目地址
https://gitee.com/scriptcode/dubbo-example.git