服务注册发现
步骤:
1、开启zookeeper服务
2、提供者
- 导入依赖
- 配置注册中心的地址,服务发现名,要扫描的包
- 在想要注册的服务类上增加(Dubbo包下的)@Service注解
3、消费者
- 导入依赖
- 配置注册中心地址,服务名
- 从远程注入服务(Dubbo包下的)@Reference注解
1、开启zookeeper服务(以windows环境为例)
2、通过maven命令打包dubbo,或者在github下载源码导入idea打包
通过cmd命令java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
启动dubbo
3、服务者Demo
导入依赖(服务者和消费者需要的依赖一样)
<!--Dubbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!--zkClient-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!--引入zookeeper-->
<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>
<!--排除slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
application.yml配置(服务者)
server:
port: 8088
dubbo:
application:
name: provider-server
registry:
address: zookeeper://127.0.0.1:2181
scan:
base-packages: com.sw.service
Service
package com.sw.service;
/**
* @Author suaxi
* @Date 2020/12/27 11:57
*/
public interface TicketService {
public String getTicket();
}
package com.sw.service;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
/**
* @Author suaxi
* @Date 2020/12/27 11:58
* zookeeper:服务注册与发现
*/
@Service //Dubbo @Service注解可以被扫描到,项目一启动,服务就自动注册到注册中心
@Component //使用Dubbo后尽量用Component注解,Spring的Service注解导包时容易搞混
public class TicketServiceImpl implements TicketService{
@Override
public String getTicket() {
return "获得票一张!";
}
}
4、消费者Demo
导入pom.xml的依赖与服务者一样
application.yml配置(消费者)
server:
port: 8089
dubbo:
application:
name: consumer-server
registry:
address: zookeeper://127.0.0.1:2181
Service
package com.sw.service;
/**
* @Author suaxi
* @Date 2020/12/27 11:57
*/
public interface TicketService {
public String getTicket();
}
package com.sw.service;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
/**
* @Author suaxi
* @Date 2020/12/27 12:07
*/
@Service //放到Spring容器中
public class UserService {
//想要拿到provider-server的票,需要到注册中心拿
@Reference //引用,pom坐标,可以定义路径相同的接口名
TicketService ticketService;
public void buyTicket(){
String ticket = ticketService.getTicket();
System.out.println("在注册中心拿到===>"+ticket);
}
}
Junit测试类
package com.sw;
import com.sw.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class ConsumerServerApplicationTests {
@Autowired
private UserService userService;
@Test
public void consumerTest() {
userService.buyTicket();
}
}
5、Dubbo前端管理页面
通过localhost:7001
可以进入dubbo的管理员页面,账号密码都是root
评论 (0)