一、服务提供者
1、pom.xml文件关键配置
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
2、application.properties文件关键配置
spring.application.name=service-provider-1 server.port=8001 eureka.instance.hostname=${spring.cloud.client.ip-address} eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port} #eureka.instance.prefer-ip-address=true eureka.client.service-url.defaultZone=http://192.168.134.134:7001/eureka/ #eureka.client.service-url.defaultZone=http://root:123456@192.168.134.134:7001/eureka/
3、启动类
@EnableEurekaClient @SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class, args); } }
4、Controller类
@RestController @RequestMapping("/user") public class UserController { @GetMapping("/{id}") public String addUser(@PathVariable(value="id") Long id){ return "provider >> id=" + id; } @GetMapping("/query") public String query(@RequestParam(value="name") String name){ return "provider >> name=" + name; } @PostMapping("/add") public User add(@RequestBody Address address){ System.out.println(address.getProvince() + ", " + address.getCity()); User user = new User(); user.setId(100L); user.setUsername("uid"); user.setPassword("pwd"); return user; } }
二、服务消费者
1、pom.xml文件的关键配置
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
2、application.properties文件配置
spring.application.name=service-consumer-1 server.port=9001 eureka.instance.hostname=${spring.cloud.client.ip-address} eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port} eureka.client.service-url.defaultZone=http://192.168.134.134:7001/eureka/ #eureka.client.service-url.defaultZone=http://root:123456@192.168.134.134:7001/eureka/
3、启动类
客户端服务调用采用Feign组件,需要在启动类引入 @EnableFeignClients 注解类。
@EnableFeignClients @SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class, args); } }
4、编写Feign客户端接口类
@FeignClient(name="service-provider-1") //name值要与服务提供者工程中application.properties文件的spring.application.name属性值一致 @RequestMapping("/user") public interface ServiceRemote { //接口方法的结构要与服务提供者Controller定义的一致 @GetMapping("/{id}") String addUser(@PathVariable(value="id") Long id); @GetMapping("/query") String query(@RequestParam(value="name") String name); @PostMapping("/add") User add(@RequestBody Address address); }
5、Controller类
在Controller类引入Feign客户端接口类,调用接口类的方法,Feign组件底层负责服务提供者方法的调用。
@RestController public class User3Controller { @Autowired ServiceRemote serviceRemote; @GetMapping("/consumer") public String test(){ String result = serviceRemote.addUser(22L); System.out.println("result=" + result); result = serviceRemote.query("cjm"); System.out.println("result=" + result); Address address = new Address(); address.setProvince("GuangDong"); address.setCity("GuangZhou"); User user = serviceRemote.add(address); System.out.println(user.getId() + ", " + user.getUsername() + ", " + user.getPassword()); return "ok"; } }
相关推荐
应用Spring Cloud创建一个服务提供者和消费者,源码。
dubbo提供者和消费者示例
Dubbo服务提供者以及消费者实例
SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例 SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例 SpringCloud分布式微服务项目搭建构造父子模块依赖...
dubbodemo spring+dubbo 搭建的 dubbo 案例,包括接口api、服务提供者和消费者,对于初学者是个很好的学习案例。
3.1 服务提供者与服务消费者.mmap
dubbo提供者和消费者工程
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复 (3) 伸缩性: 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心 服务提供者无状态...
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复 (3) 伸缩性: 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心 服务提供者无状态,可动态增加...
本资料基于 springboot+dubbo+zookeeper 实现分布式服务提供者和消费者的开发 本资料旨在提供最单纯的 dubbo 学习和入门,摒弃了所有非必要的技术,对于dubbo 的入门和理解很有帮助,但对于 dubbo 的深入学习是没有...
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外 注册中心通过...
eureka微服务之——服务注册发现、服务消费者,服务提供者非常简单的实例 下载下来,导入包就可以使用。提供给初学者的参考学习理解。如有spring cloud 相关疑问可以留言
eureka(微服务之——服务注册发现、服务消费者,服务提供者简单实例)
实现了消费者和服务提供者的远程通信
Dubbo搭建HelloWorld-创建服务提供者与消费者示例代码
1.SpringBoot聚合工程整合Dubbo,实现服务提供者与服务消费者的数据调用, 2.该项目提高了自己对Spring Boot整合Dubbo的理解,并深刻的认识到了服务者与消费者之间的调用及流程 4. Dubbo配置全部采用yml文件配置,...
随着网格商业化的不断深入,网格计算要求:服务提供者和消费者间在组合服务中需达成端对端的高服务质量协议,高可靠性的组合服务协商机制和保障机制在网格计算中扮演着越来越重要的角色。所提出的网格合同计算模型,...
dubbo注册中心服务ip和实际服务提供者ip不一致问题 网上收集的资料
dubbo实现的服务消费者,服务提供者,分模块拆分的demo
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复 (3) 伸缩性: 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心 服务提供者无状态,可动态增加...