1、新建Springboot项目
2、去dubbo官网下载相应的jar包(dubbo-admin-master)https://github.com/apache/dubbo-admin/tree/master
以及相应的zookeeper jar包(apache-zookeeper-3.5.8-bin)https://downloads.apache.org/zookeeper/zookeeper-3.5.8/
注意:dubbo-admin-master的用mvn打包生成jar包
mvn clean install -Dmaven.test.skip=true
3、打开相应的bin文件夹 双击命令脚本
到dubbo-admin-master\dubbo-admin\target目录下 打开命令行
cmd
java
4、然后到 IDEA中 写服务商、消费方(新建方式以上已说明)
依赖:
<!--dubbo zookeeper-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<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-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
5、配置服务提供方的信息 以及消费者的信息
provider-server: application.properties
#服务名
spring.application.name = provider-server
#应用服务 WEB 访问端口
server.port=8001
#服务名称
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#那些服务注册
dubbo.scan.base-packages=com.thunder.service
consumer-server: application.properties
#应用名称
spring.application.name=consumer-server
#应用服务 WEB 访问端口
server.port=8002
#消费者去拿服务 需要暴露自己名字
dubbo.application.name=consumer-server
#告诉消费者注册中心的地址 去此地址拿服务
dubbo.registry.address=zookeeper://127.0.0.1:2181
6、服务提供商的 服务代码(要实现 接口 用于JDK动态代理)
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
@Component //spring组件
@Service //dubbo service
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "雷哥学JAVA";
}
}
消费者:
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
@Controller//spring 容器
public class UserService {
//想要得到服务 去注册中心 拿服务
@Reference //远程引用 pom坐标 新建与服务名 一样的 类、接口
TicketService ticketService;
public void buyTicket(){
String ticket = ticketService.getTicket();
System.out.println("在注册中心拿到:"+ticket);
}
}
写一个与服务商 一样的接口类 用于调用
public interface TicketService {
String getTicket();
}
7、系统测试(Springboot测试类)
@SpringBootTest
class ConsumerServerApplicationTests {
@Autowired
UserService userService;
@Test
void contextLoads() {
userService.buyTicket();
}
}
结果: