赞
踩
sg-app:消费者
sg-com-api:公共接口 (消费者和提供者需要引用)
sg-com-tool:公共工具包 (提供时间转换,字符串转换等工具转换类) 不详写也可以不加
sg-web-parent:父依赖包 (消费者和提供者需要继承) 用于管理依赖
sg-web-provider:提供者
注:父类只用于管理依赖,处理多个消费者和提供者的情况,所以只有pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.xwl</groupId> <artifactId>sg-web-parent</artifactId> <packaging>jar</packaging> <version>1.0</version> <description>web页面服务父类包</description> <properties> <spring_version>2.6.1</spring_version> <dubbo_version>3.0.4</dubbo_version> <curator_version>4.2.0</curator_version> <nacos_version>2.0.3</nacos_version> <fastjson_version>2.11.2</fastjson_version> </properties> <dependencyManagement> <dependencies> <!--自定义工具包--> <dependency> <groupId>cn.xwl</groupId> <artifactId>sg-com-tool</artifactId> <version>1.0</version> </dependency> <!--springboot基本依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>${spring_version}</version> </dependency> <!--test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring_version}</version> </dependency> <!--springboot配置文件依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>${spring_version}</version> <optional>true</optional> </dependency> <!--springboot web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring_version}</version> <!-- <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> </exclusions>--> </dependency> <!--boot整合dubbo--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo_version}</version> </dependency> <!--注册中心 zookeeper 使用--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-x-discovery</artifactId> <version>${curator_version}</version> </dependency> <!--注册中心 nacos 使用--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>${dubbo_version}</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos_version}</version> </dependency> <!--Jackson required包 用于springboot引发的json冲突--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${fastjson_version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${fastjson_version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${fastjson_version}</version> </dependency> </dependencies> </dependencyManagement> </project>
pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.xwl</groupId> <artifactId>sg-web-parent</artifactId> <version>1.0</version> <relativePath/> </parent> <groupId>cn.xwl</groupId> <artifactId>sg-web-provider</artifactId> <version>1.0</version> <description>web端接口提供</description> <dependencies> <dependency> <groupId>cn.xwl</groupId> <artifactId>sg-com-api</artifactId> <version>1.0</version> </dependency> <!--自定义工具包--> <dependency> <groupId>cn.xwl</groupId> <artifactId>sg-com-tool</artifactId> </dependency> <!--springboot基本依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--springboot配置文件依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!--boot整合dubbo--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <!--zookeeper注册中心--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-x-discovery</artifactId> </dependency> <!--nacos注册中心--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> </dependency> <!--nacos版本--> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </dependency> </dependencies> </project>
yml
server: port: 8080 dubbo: application: #当前这个应用的信息 name: sg-web-provider #应用名 protocol: # 服务采用的协议 基本默认未dubbo协议(netty) name: dubbo port: 20880 #dubbo服务暴露的端口 registry: #注册相关信息 address: zookeeper://10.250.204.106:2181 #注册中心配置 #address: nacos://10.250.204.106:8848 #注册中心配置 timeout: 30000 # 到注册中心的超时时间 provider: retries: -1 #重试次数 consumer delay: -1 #延迟到spring容器加载之后 scan: #需要发布的服务接口实现类扫描路径 base-packages: cn.xwl.dubbo
接口发布
package cn.xwl.dubbo.login.service; import cn.sg.user.LoginService; import org.apache.dubbo.config.annotation.DubboService; @DubboService public class LoginServiceImpl implements LoginService { public String baseLogin(String username, String password) { if("123".equals(password)){ return "登录成功!欢迎你"+username; } return "登陆失败,请检查密码是否正确"; } }
在yml中配置dubbo.scan.base-packages为扫描路径,与spring扫描类似,在扫描到的路径下创建需要发布的接口 并添加@DubboService,服务就i会自动发布到nacos中
pom:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>sg-web-parent</artifactId> <groupId>cn.xwl</groupId> <version>1.0</version> <relativePath/> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>sg-app</artifactId> <dependencies> <dependency> <groupId>cn.xwl</groupId> <artifactId>sg-com-api</artifactId> <version>1.0</version> </dependency> <!--自定义工具包--> <dependency> <groupId>cn.xwl</groupId> <artifactId>sg-com-tool</artifactId> </dependency> <!--springboot基本依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--springboot配置文件依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!--boot整合dubbo--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> </dependency> <!--注册中心--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-x-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--nacos注册中心--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> </dependency> <!--nacos版本--> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </dependency> <!--Jackson required包--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </dependency> </dependencies> </project>
yml
server:
port: 7070
dubbo:
application: #当前这个应用的信息
name: sg-web-consumer #应用名
registry: #注册相关信息
#address: zookeeper://10.250.204.106:2181 #注册中心配置
address: nacos://10.250.200.103:8848 #注册中心配置
timeout: 30000 # 到注册中心的超时时间
consumer:
timeout: 50000 # 访问服务超时时间
服务实现接口:
package web.login; import cn.sg.user.LoginService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class loginController { @DubboReference public LoginService loginService; @RequestMapping("baseLogin") public String baseLogin(String username,String password){ return loginService.baseLogin(username,password); } }
服务实现接口只需要直接使用@DubboReference 引用接口类就能够直接远程调用了,前提是消费者和提供者都引用了公共接口包。
package cn.sg.user;
//登录接口服务定义
public interface LoginService {
//普通登录接口 通过用户名密码登录
String baseLogin(String username,String password);
}
只定义接口和实体类
访问http://localhost:7070/baseLogin?username=xwl&password=123
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。