服务提供者:
1、引入依赖
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-x-discovery</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.0.7</version>
</dependency>
2、application.properties配置或application.yml配置
# 配置服务的名,以下两种配置方式相同
dubbo.application.name=user-service
# 项目启动端口
server.port=8002
# 配置注册中心的地址,指定注册中心的类型和地址信息
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 配置服务提供者远程通信的协议和端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881
server:
port: 8090
spring:
application:
name: dubbo-samples-privider-springCloud
dubbo:
application:
name: ${spring.application.name}
registry:
address: zookeeper://127.0.0.1:2181
timeout: 2000
protocol:
name: dubbo
port: 20890
# 扫描 @DubboService 注解
scan:
base-packages: com.dubbo.service
3、启动类添加@EnableDubbo注解开启dubbo
4、暴露远程调用的接口,对外提供服务
@DubboService(interfaceClass = UserService.class, timeout = 5000)
public class UserServiceImpl implements UserService {
@Override
public List<UserAddress> getUserAddressList(String userId) {
UserAddress address1 = new UserAddress(1, "北京市昌平区宏福科技园综合楼3层", "1", "李老师", "010-56253825", "Y");
UserAddress address2 = new UserAddress(2, "深圳市宝安区西部硅谷大厦B座3层(深圳分校)", "1", "王老师", "010-56253825", "N");
return Arrays.asList(address1,address2);
}
}
服务消费者:
1、引入依赖
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-x-discovery</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.0.7</version>
</dependency>
2、application.properties配置
# 配置服务的名,以下两种配置方式相同
#spring.application.name=order-service
dubbo.application.name=order-service
# 项目启动端口
server.port=8001
# 配置包扫描的路径
#dubbo.scan.base-packages=com.example.orderservicecomsumer.service
# 配置注册中心的地址,指定注册中心的类型和地址信息,以下两种方式配置相同
#dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper
3、启动类添加@EnableDubbo注解开启dubbo
4、调用远程接口
/**
* 调用远程接口,指定接口,关闭自启动检查,不可用时会抛出异常
* 可通过 retries=“2” 来设置重试次数(不含第一次)
* 为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间
* 版本号不同的服务相互间不引用,version=*,表示随机调用,新版本和旧版本都可调用
*/
@DubboReference(interfaceClass = UserService.class, check = false, retries = 3, timeout = 5000, version = "*")
UserService userService;
@Override
public List<UserAddress> initOrder(String userId) {
return userService.getUserAddressList(userId);
}