SpringCloud 服务通信方法

eureka 服务已经启动  http://localhost:8761/

注: 在启动文件加上 注解

1@EnableEurekaServer application.yml 配置文件 2 3eureka: 4 instance: 5 hostname: localhost 6 client: 7 service-url: 8 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ # 相互注册实现高可用 9 register-with-eureka: false # true 将自己注册到eureka 10 fetch-registry: false 11 server: 12 enable-self-preservation: false 13spring: 14 application: 15 name: eureka # 服务名称,注册之后的名称 16server: 17 port: 8761

clienta 服务注册eureka

启动文件加入注解: 

1@EnableEurekaClient 2 3application.yml 配置文件 端口8000 4 5eureka: 6 client: 7 service-url: 8 defaultZone: http://localhost:8761/eureka/ #,http://localhost:8762/eureka/,http://localhost:8763/eureka/ 9# instance: 10# hostname: clientName 11spring: 12 application: 13 name: clienta 14 15@RestController 16public class TestController { 17 @GetMapping("/msg") 18 public String msg() { 19 return "this is clienta msg!!!"; 20 } 21}

 访问  http://localhost:8000/msg     能返回结果

client 服务注册eureka 同clienta

在clien中调用clienta中方法

第一种方法:

1@RestController 2public class HelloController { 3 4 5 @Autowired 6 LoadBalancerClient loadBalancerClient; 7 8 @GetMapping("/test") 9 public String test() { 10 // 获取服务实例 11 ServiceInstance serviceInstance = loadBalancerClient.choose("CLIENTA"); 12 // 根据实例获取host port 13 String host = serviceInstance.getHost(); 14 int port = serviceInstance.getPort(); 15 // 拼接url 16 String url = String.format("http://%s:%s%s", host, port, "/msg"); 17 RestTemplate restTemplate = new RestTemplate(); 18 String res = restTemplate.getForObject(url, String.class); 19 return res; 20 } 21}

 第二种: 配置config

1@Component 2public class RestTemplateConfig { 3 4 @Bean 5 @LoadBalanced 6 public RestTemplate restTemplate() { 7 return new RestTemplate(); 8 } 9} 10 11@RestController 12public class HelloController { 13 14 @Autowired 15 private RestTemplate restTemplate; 16 @GetMapping("/test") 17 public String test() { 18 String res = restTemplate.getForObject("http://CLIENTA/msg", String.class); 19 return res; 20 } 21}

 启动client 端口 8081

访问: http://localhost:8081/test

1以上为基于RestTemplate 通信方式.使用Feign通信eureka clienta 项目不变化修改 client 项目:1. 添加依赖 2 3<dependency> 4 <groupId>org.springframework.cloud</groupId> 5 <artifactId>spring-cloud-starter-openfeign</artifactId> 6 </dependency>

 2. 启动类添加注解

@EnableFeignClients

 3. 创建一个接口 并增加注解

1@FeignClient(name = "CLIENTA") // name是服务的名字 2public interface ClientAClient { 3 4 @GetMapping("/msg") // 基于路由匹配, 方法名可以不同 5 String msg(); 6}

 4. 在controller中直接使用

1@RestController 2public class HelloController { 3 @Autowired 4 private ClientAClient clientAClient; 5 @GetMapping("/test") 6 public String test() { 7 return clientAClient.msg(); 8 } 9}

 附pom.xml文件 注意版本对应 http://spring.io/projects/spring-cloud  官网

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.example</groupId> 7 <artifactId>client</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>war</packaging> 10 11 <name>client</name> 12 <description>Demo project for Spring Boot</description> 13 <parent> 14 <groupId>org.springframework.boot</groupId> 15 <artifactId>spring-boot-starter-parent</artifactId> 16 <version>2.0.2.RELEASE</version> 17 <relativePath/> <!-- lookup parent from repository --> 18 </parent> 19 20 <properties> 21 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 22 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 23 <java.version>1.8</java.version> 24 <spring-cloud.version>Finchley.SR2</spring-cloud.version> 25 </properties> 26 27 <dependencies> 28 <dependency> 29 <groupId>org.springframework.boot</groupId> 30 <artifactId>spring-boot-starter-web</artifactId> 31 </dependency> 32 <dependency> 33 <groupId>org.springframework.cloud</groupId> 34 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 35 </dependency> 36 <dependency> 37 <groupId>org.springframework.cloud</groupId> 38 <artifactId>spring-cloud-commons</artifactId> 39 </dependency> 40 <dependency> 41 <groupId>org.springframework.boot</groupId> 42 <artifactId>spring-boot-starter-tomcat</artifactId> 43 <scope>provided</scope> 44 </dependency> 45 <dependency> 46 <groupId>org.springframework.cloud</groupId> 47 <artifactId>spring-cloud-starter-openfeign</artifactId> 48 </dependency> 49 <dependency> 50 <groupId>org.springframework.boot</groupId> 51 <artifactId>spring-boot-starter-test</artifactId> 52 <scope>test</scope> 53 </dependency> 54 </dependencies> 55 56 <dependencyManagement> 57 <dependencies> 58 <dependency> 59 <groupId>org.springframework.cloud</groupId> 60 <artifactId>spring-cloud-dependencies</artifactId> 61 <version>${spring-cloud.version}</version> 62 <type>pom</type> 63 <scope>import</scope> 64 </dependency> 65 </dependencies> 66 </dependencyManagement> 67 68 <build> 69 <plugins> 70 <plugin> 71 <groupId>org.springframework.boot</groupId> 72 <artifactId>spring-boot-maven-plugin</artifactId> 73 </plugin> 74 </plugins> 75 </build> 76 77 78</project>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

SpringCloud 服务通信方法 - HelloWorld