Dubbo SpringBoot
1、根 pom
<properties><dubbo.version>3.0.5</dubbo.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>${dubbo.version}</version><type>pom</type></dependency></dependencies>
2、Api Module
maven 项目
2.1 RpcResult
@Datapublic class RpcResult <T> implements Serializable {/*** 是否响应成功*/private Boolean success;/*** 响应状态码*/private Integer code;/*** 响应数据*/private T data;/*** 错误信息*/private String message;private RpcResult() {this.code = 200;this.success = true;}private RpcResult(T obj) {this.code = 200;this.data = obj;this.success = true;}private RpcResult(ResultCodeEnum resultCode) {this.success = false;this.code = resultCode.getCode();this.message = resultCode.getMessage();}public static<T> RpcResult success(){return new RpcResult();}public static<T> RpcResult<T> success(T data){return new RpcResult<T>(data);}public static<T> RpcResult<T> failure(ResultCodeEnum resultCode){return new RpcResult<T>(resultCode);}@Overridepublic String toString() {return "RpcResult{" +"success=" + success +", code=" + code +", data=" + data +", message='" + message + '\'' +'}';}}
2.2 ResultCodeEnum
public enum ResultCodeEnum {/** */SUCCESS(200, "success"),ORDER_NOT_FOUND(2000, "order not found");/*** 响应状态码*/private Integer code;/*** 响应信息*/private String message;ResultCodeEnum(Integer code, String msg) {this.code = code;this.message = msg;}public Integer getCode() {return code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}
2.3 OrderDubboService 接口
public interface OrderDubboService {RpcResult<Object> getOrder();}
3、 Provider Module
OrderDubboServiceImpl 实现接口
@DubboServicepublic class OrderDubboServiceImpl implements OrderDubboService {@Overridepublic RpcResult<Object> getOrder() {return RpcResult.success("provider --> " + LocalDateTime.now());}}
application.yml
server:# 服务端口port: 7777spring:application:name: order-provider# dubbo 相关配置(dubbo 的配置不再以 Spring 开头)dubbo:application:# 应用名称name: order-providerscan:# 接口实现者(服务实现)包base-packages: com.cug.provider.impl# 注册中心信息registry:address: zookeeper://127.0.0.1:2181protocol:# 协议名称name: dubbo# 协议端口, dubbo-admin 占用 20880 端口port: 20881
4、 Consumer Module
controller
@RestController@RequestMapping("/order")public class TestController {@DubboReferenceprivate OrderDubboService orderDubboService;@GetMapping("getOrder")public RpcResult<Object> getOrder() {return orderDubboService.getOrder();}}
application.yml
server:port: 7000spring:application:name: order-consumer# dubbo 相关配置dubbo:application:name: order-consumerregistry:address: zookeeper://127.0.0.1:2181
5、ZooKeeper
启动 zkServer.cmd
6、启动 dubbo-admin
编译源码
## 1、 下载代码:git clone https://github.com/apache/dubbo-admin.git## 2、在 dubbo-admin-server/src/main/resources/application.properties 中指定注册中心地址## 3、构建mvn clean package -Dmaven.test.skip=true## 4、启动## 启动 dubbo-admin-server, 在 application.properties 中添加 server.port=8088mvn --projects dubbo-admin-server spring-boot:run## 启动 dubbo-admin-ui, 修改 vue.config.js 中 proxy.target --> http://localhost:8088npm run dev ## 如果有 error , 则先 npm run build## 5、访问http://localhost:8082## 每次修改配置文件后,都需要重新构建,即:mvn clean package -Dmaven.test.skip=true
7、测试
1、启动 Provider Module 2、启动 Consumer Module 3、http://localhost:7000/order/getOrder
