注:首先需要启动Dubbo Admin 服务端 https://editor.csdn.net/md/?articleId=116785570
再启动虚拟机上Zookeeper https://blog.csdn.net/jq1223/article/details/116463468
首先创建 Maven 的 dubbo-demo 父项目
父工程下分别新建
dubbo-provider 生产者
dubbo-provider-api api接口
dubbo-consumer 消费者
dubbo-provider-api api接口 项目
创建公共接口
package com.jq.service.impl;
public interface PhoneService {
String getPhoneList();
}
dubbo-provider 生产者 项目
配置依赖:
<!--api接口-->
<dependency>
<groupId>jq</groupId>
<artifactId>dubbo-provider-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--zookeeper依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- dubbo集成springboot-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
配置文件信息 application.yml
#服务端口
server:
port: 8000
#服务名称
spring:
application:
name: dubbo-provider
#dubbo配置
dubbo:
application:
name: dubbo-provider
id: dubbo-provider
protocol:
#注意======== id: dubbo name: dubbo 不能更改
id: dubbo
name: dubbo
port: 20882
registry:
id: dubbo-provider
address: zookeeper://192.168.230.137:2181
scan:
#扫描提供者信息路径
base-packages: com.jq.service.impl
创建一个ServiceImol的实现类
package com.jq.service.impl;
import org.apache.dubbo.config.annotation.Service;
@Service //注入dubbo包
public class PhoneServiceImpl implements PhoneService{
@Override
public String getPhoneList() {
return "4343433";
}
}
创建消费者控制层测试
package com.jq.controller;
import com.jq.service.impl.PhoneService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PhoneController {
@Reference //远程调用
private PhoneService phoneService;
//生产者
@RequestMapping("test1")
public String test(){
return phoneService.getPhoneList();
}
}
生产者访问 http://localhost:8000/test1
dubbo-consumer 消费者 项目
配置依赖:
<!--api接口-->
<dependency>
<groupId>jq</groupId>
<artifactId>dubbo-provider-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--zookeeper依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- dubbo集成springboot-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
配置文件信息 application.yml
#服务端口
server:
port: 8001
#服务名称
spring:
application:
name: dubbo-consumer
#dubbo配置
dubbo:
application:
name: dubbo-consumer
id: dubbo-consumer
registry:
id: dubbo-consumer
#连接zookeeper
address: zookeeper://192.168.230.137:2181
创建消费者控制层测试
package com.jq.controller;
import com.jq.service.impl.PhoneService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PhoneController {
@Reference
private PhoneService phoneService;
//消费者
@RequestMapping("test")
public String test(){
return phoneService.getPhoneList();
}
}
消费者者访问显示:
消费者者访问 http://localhost:8001/test
生产者访问 http://localhost:8000/test1
项目启动后页面注册信息: