随着微服务日趋流行,相信越来越多的公司开始使用微服务架构。下面我使用zookeeper作为注册中心,初步使用Dubbo完成系统之间服务的调用。
1.安装zookeeper,并启动。推荐使用docker安装,统一管理镜像,具体方法可自行查阅。
2.创建一个SpringBoot 项目provider-ticket, 添加依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
</dependency>
创建一个接口和实现类,即我们需要提供给消费者使用的方法。
public interface TicketService {
public String getTicket();
}
@EnableDubbo //开启springboot Dubbo自动装配
@Component // 这个类作为组件注册到Spring容器管理
@Service //这里的service为com.alibaba.dubbo.config.annotation.Service;意思就是将这方法作为dubbo的服务
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "我来了-";
}
}
在application.properties 中添加配置文件,主要是将服务注册到zookeeper上
dubbo.application.name=provider-ticket
dubbo.registry.address=zookeeper://172.17.19.145:2181
//扫描的接口
dubbo.scan.base-packages=com.example.TicketService
至此,我们的生产端已经写好,接下来我们需要编写消费端的代码。
再创建一个SpringBoot项目,consumer-user .添加zk和Dubbo的依赖,和上面一样。
在application.properties 中添加配置文件,主要是将服务注册到zookeeper上
dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://172.17.19.145:2181
server.port=8082
创建一个接口,包名类名和provider-ticket中的TicketService 相同,这里主要是为了使用方便,项目中一般会将生产者打成jar包来使用。
public interface TicketService {
public String getTicket();
}
最后一步,使用生产者提供的方法。
@Service
public class UserService {
@Reference //这里是dubbo的注解,目的在于表明使用的是服务端的TicketService 服务
TicketService ticketService;
public void hello(){
String s = ticketService.getTicket();
System.out.println("买到票了--"+s);
}
}
ok,到这里我们的服务端和消费端代码都编写完成。我们可以开始测试了,编写一个测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class ConsumerUserApplicationTests {
@Autowired
UserService userService;
@Test
public void contextLoads() {
userService.hello();
}
}
看到我们的输出效果
买到票了--我来了-
达到预期的效果,至此我们使用SpringBoot 整合Dubbo+zookeeper 的方法全部完成,当然这只是个简单的demo,如果有什么问题留言或者私信,谢谢。