1.创建Maven工程定义 Dubbo RPC 服务接口
通常打包成 jar 上传maven仓库,被 Dubbo 服务提供方和消费方依赖。
注意:实体类需要实现Serializable序列化接口用于网络传输,否则dubbo服务调用失败
2.创建服务提供方(SpringBoot工程)
引入dubbo的pom依赖包和API接口依赖包
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>cn.witsky</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0.1</version>
<optional>true</optional>
</dependency>
在配置文件 application.properties
中添加 Dubbo 配置信息,如下:
## Dubbo 服务提供者配置
dubbo.application.name=provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.scan.basePackages=com.example.dubbointerface
定义RPC接口实现类
/**
* @author zhaoliancan
* @description
* @create 2019-07-09 16:55
*/
@Service(version = "1.0.0")
@Component
public class GetUserServiceImpl implements getNameService {
@Override
public User getUser() {
User user = new User();
user.setAge(18);
user.setName("小龙女");
return user;
}
}
提前启动Zookeeper后,启动服务提供者,出现以下日志则说明dubbo服务启动成功并向zookeeper注册。
3.创建服务消费者(SpringBoot工程)
需跟服务提供者一样引入dubbo的pom依赖包和API接口依赖包。
在配置文件 application.properties
中添加 Dubbo 配置信息,如下:
### Dubbo 服务消费者配置
dubbo.application.name=consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.basePackages=com.example.customer.manager
定义一个定时调用 RPC 服务的任务:
/**
* @author zhaoliancan
* @description
* @create 2019-07-09 17:10
*/
@Component
public class GetUser {
@Reference(version = "1.0.0")
private getNameService getNameService;
@Scheduled(fixedDelay = 3000)
public void getUser() {
User user=getNameService.getUser();
System.out.println("连接dubbo服务成功,获取"+"姓名:"+user.getName()+",年龄:"+user.getAge());
}
}
注:开启Spring定时任务,需要在启动类上添加@EnableScheduling注解,否则定时任务不生效。
启动服务消费者:
打印以上日志则说明远程RPC服务调用成功。