前提: 已经准备好Dubbo-admin和Zookeeperjava
显示建立一个Empty Project,建立两个Module--->consumer-server以及provider-server:git
这是建立成功的结构。github
两个Module都导入下方依赖:spring
<!-- dubbo-spring-boot-starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version> </dependency> <!-- zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
建立一个Service文件夹:apache
public interface TicketService { public String getTicket(); }
@Service @Component public class TicketServiceImpl implements TicketService { @Override public String getTicket() { return "这是一个getTicket()"; } }
注意:springboot
这里的@Component是Spring下的注解,可是@Service应该使用的是Dubbo下的注解服务器
用了Dubbo尽可能不要用@Service,若是要使用,记得分清楚Spring和Dubbo注解的不一样app
server.port=8001 # 服务应用名字 dubbo.application.name=provider-server # 注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 # 注册服务 dubbo.scan.base-packages=com.zc.Service
java -jar xxxx.jar
@Service public class UserService { //想拿到 提供者 提供的东西,要去注册中心拿 @Reference //引用 TicketService ticketService; public void buyTicket(){ String ticket = ticketService.getTicket(); System.out.println("拿到啦---"+ticket); } }
这里的@Service是将该类注入到Spring容器,使用的Spring的注解ide
这里 TicketService ticketService; 会报错,由于在 consumer-server 中没有 TicketService 这个接口。spring-boot
因此,咱们把这个接口复制过来:
public interface TicketService { public String getTicket(); }
这样就能够使用了,Dubbo会自动给你引用提供者的实现类。
server.port=8002 # 消费者拿服务路径 dubbo.application.name=consumer-server # 注册中心的地址 dubbo.registry.address=zookeeper://127.0.0.1:2181
消费者与提供者的不一样:
提供者配置信息不须要注册服务,消费者提供地址,消费者只须要拿到服务。
在consumer-server中的test中进行测试:
@SpringBootTest class ConsumerServerApplicationTests { @Autowired UserService userService; @Test void contextLoads() { userService.buyTicket(); } }
前提:Zookeeper已经开启
提供者提供服务
消费者如何消费
我的博客为:
MoYu's HomePage
MoYu's Gitee Blog