1.分别创建服务提供者和消费者。引入dubbo和zookeeper客户端相关依赖。
<!--引入SpringBoot-dubbo的依赖-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!--引入zookeeper客户端工具-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
2.在服务提供者中创建Service和其实现类,并且在实现类中添加@Service注解将服务发布出去,注意这里需要引入的Service包为com.alibaba.dubbo.config.annotation包下面的。
@Component //加载到Spring容器中
@Service //将服务发布出去(注意引入的是com.alibaba.dubbo下的Service包)
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《西游记》";
}
}
3.在application.properties中添加配置项。
#dubbo应用名称
dubbo.application.name=provider-ticket
#注册中心地址
dubbo.registry.address=zookeeper://47.107.185.209:2181
#扫描包文件
dubbo.scan.base-package=com.wunian.ticket.service
4.在消费者中的application.properties中添加配置项。
dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://47.107.185.209:2181
5.将服务提供者中的Service所在的包以及Service实现类拷贝到消费者项目中。
6.在service中使用@Reference注解调用zookeeper中已经注册的Service实例。
@Service //这里使用的是Spring的Service
public class UserService {
@Reference //根据全类名去匹配配置中心发布的Service
TicketService ticketService;
public void hello(){
String ticket=ticketService.getTicket();
System.out.println("买到票了,"+ticket);
}
}
7.在测试类中测试远程调用。
@Autowired
UserService userService;
@Test
public void testHello(){
//测试消费者远程调用服务提供者服务方法
userService.hello();
}