Docker下安装Zookeeper:
docker images查看安装到的镜像,2181端口是对客户端提供服务的端口
[root@localhost webapps]# docker pull zookeeper
[root@localhost webapps]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/zookeeper latest 6ad6cb039dfa 6 days ago 252 MB
[root@localhost webapps]# docker run --name zk01 -p 2181:2181 --restart always -d 6ad6cb039dfa
0bd16e859ca76d1194af4225602e897a018d9b5243ad34259285f6f14267e376
创建一个空工程方便管理:
在空工程下SpringBoot工程:
供应工程(provider-ticket)
/**
* 1、将服务提供者注册到注册中心
* 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的客户端工具-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
在provider-ticket的配置文件(application.properties)做以下配置
#服务名,与工程名一致
dubbo.application.name=provider-ticket
#发布到注册中心
dubbo.registry.address=zookeeper://192.168.52.132:2181
#将哪个包下的发布出去
dubbo.scan.base-packages=com.qun.ticket.service
在service包下添加TicketService接口并添加实现类,实现类上添加dubbo里的@Service注解,用于将服务发布出去。并添加@Component将当前类添加为组件。实现接口方法。
TicketService
package com.qun.ticket.service;
public interface TicketService {
public String getTicket();
}
TicketServiceImpl
package com.qun.ticket.service;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
@Component
@Service //将服务发布出去
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《厉害了,我的国》";
}
}
记得在启动类上添加@EnableDubbo注解启动Dubbo。
项目结构
在空工程下添加消费者工程:(consumer-user)
/**
* 1、引入依赖‘
* 2、配置dubbo的注册中心地址
* 3、引用服务
*/
添加依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!--引入zookeeper的客户端工具-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
application添加配置
dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://192.168.52.132:2181
将供应工程下的service包复制到消费者工程,并删除接口实现类,保持复制过来包名一致。
并在消费者工程添加service包,创建UserService类
package com.qun.user.service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.qun.ticket.service.TicketService;
import org.springframework.stereotype.Service;
@Service
public class UserService{
@Reference
TicketService ticketService;
public void hello(){
String ticket = ticketService.getTicket();
System.out.println("买到票了:"+ticket);
}
}
测试
package com.qun.user;
import com.qun.user.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class ConsumerUserApplicationTests {
@Autowired
UserService userService;
@Test
void contextLoads() {
userService.hello();
}
}
consumer-user项目结构