-
前提
Docker安装安装zookeeper
Docker pull zookeeper
Docker run --name zk01 -p 2181:2181 --restart always -d dockerID -
流程
将服务提供者注册到注册中心
1、引入dubbo和zkclient相关依赖
2、配置dubbo的扫描包和注册中心地址
3、使用@Service发布服务 -
创建一个生产者工程 引入依赖
<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>
- 生产者配置文件
dubbo.application.name=provider-ticket
dubbo.registry.address=zookeeper://192.168.43.197:2181
dubbo.scan.base-packages=com.atguigu.ticket.service
- 创建生产者 (@Service需要用com.alibaba.dubbo.config.annotation.Service)
public interface TicketService {
public String getTicket();
}
@Component
@Service //将服务发布出去
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《厉害了,我的国》";
}
}
- 另起一个工程创建消费者 引入依赖
<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>
- 生产者配置文件
dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://192.168.43.197:2181
dubbo.scan.base-packages=com.atguigu.ticket.service
- 把生产者提供的接口包移过来(全类名与生产者保持一致)
public interface TicketService {
public String getTicket();
}
- 引用生产者
@Service
public class UserService{
@Reference
TicketService ticketService;
public void hello(){
String ticket = ticketService.getTicket();
System.out.println("买到票了:"+ticket);
}
}
- 测试类进行测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class ConsumerUserApplicationTests {
@Autowired
UserService userService;
@Test
public void contextLoads() {
userService.hello();
}
}