简单上手springcloud,eureka加fengin实现服务调用
一、搭建eureka服务端
idea智能创建eureka客户端和服务端
我们创建的是单机版的服务端配置文件如下
server:port: 8761
eureka:server:enable-self-preservation: falseinstance:hostname: localhostclient:#声明自己是服务端registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
在springboot的启动类上面加上@EnableEurekaServer注解
启动服务,在浏览器输入http://localhost:8761/,即可看见注册中心的页面
二、搭建eureka客户端
新建一个eureka客户端的项目,并且在服务端注册,完成之后,即可在注册中心的页面看见多了一个服务
配置文件
server:port: 8772#指定注册中心地址
eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/
#服务的名称
spring:
application:
name: product-servic
表名向8761这个端口的服务注册
在springboot的启动类上面加上@EnableEurekaClientr注解,表名是客户端
然后和springmvc的玩法一样,写三层架构
接口
public interface ProductService {List<Product> listProduct();Product findById(long id);}
实现类
public class ProductServiceImpl implements ProductService {private static final Map<Long, Product> daoMap = new HashMap<Long, Product>();static {Product p1 = new Product(1, "iphonex", 9999);Product p2 = new Product(2, "xiaomi", 7777);daoMap.put(p1.getId(),p1);daoMap.put(p2.getId(),p2);}@Overridepublic List<Product> listProduct() {Collection<Product> collection = daoMap.values();List<Product> list = new ArrayList<>(collection);return list;}@Overridepublic Product findById(long id) {Product product = daoMap.get(id);return product;}
}
controller,这里注意/api/product/find,后面的feign调用会用到
@RestController
@RequestMapping("/api/product/")
public class ProductController {@Autowiredprivate ProductService productService;@RequestMapping("list")public Object list(){return productService.listProduct();}@RequestMapping("find")public Object findById(@RequestParam("id") int id){return productService.findById(id);}}
浏览器输入
http://localhost:8772/api/product/find?id=1
然后就可以在之前注册中心页面看到多了一个服务
三、通过feign实现对eureka客户端的调用
同样idea智能创建feign客户端项目
在springboot启动类加上
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
注解
配置文件
eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/
server:port: 8765
spring:application:name: service-feign
同样表示往注册中心注册该服务
@FeignClient(value = "product-servic")
public interface SchedualServiceHi {@RequestMapping(value = "/api/product/find",method = RequestMethod.GET)String sayHiFromClientOne(@RequestParam(value = "id") long id);
}
这里的product-servic和前面erueka客户端的服务名一致
/api/product/find
@RequestParam(value = “id”) long id
这个路径和参数也要和前面erueka客户端的一致
这个服务的端口是8765
浏览器输入
http://localhost:8765/api/product/find?id=2
我们可以看到内容和
http://localhost:8772/api/product/find?id=2
这个页面的内容是一样的
说明feign成功调用了erueka客户端的服务
再看看注册中心的页面发现也多了一个服务
四、总结、收
一次简单的微服务调用就这样完成了,真实的项目肯定还要做一些权限的配置。
自己按照步骤操作的时候肯定会遇到各种配置问题,利用搜索引擎解决就好了。
我贴两个自己遇到的坑
当时项目无法启动加了这个些配置就好了
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><!--跳过项目运行测试用例--><skipTests>true</skipTests></configuration></plugin>
feign项目缺少这两个配置,导致我卡了半天
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
个人也是第一次写springcloud的demo,第一次写博客
要是觉得有帮助,欢迎给个赞鼓励鼓励呗~
简单上手springcloud,eureka加fengin实现服务调用相关推荐
- 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)
转:https://blog.csdn.net/forezp/article/details/69808079 最新版本: 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign ...
- SpringCloud实战5-Feign声明式服务调用
SpringCloud实战5-Feign声明式服务调用 在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还 ...
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81040925 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...
- SpringCloud[04]Ribbon负载均衡服务调用
文章目录 Ribbon负载均衡服务调用 1. 概述 1. Ribbon是什么 2. Ribbon能做什么 2. Ribbon负载均衡演示 1. 架构说明 2. Ribbon的POM依赖 3. Rest ...
- 最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
一.spring cloud简介 鉴于<史上最简单的Spring Cloud教程>很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEAS ...
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)(转)
http://blog.csdn.net/forezp/article/details/70148833 版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http:// ...
- 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81040965 本文出自方志朋的博客 上一篇文章,讲述了如何通过RestTemplate+R ...
- SpringCloud OpenFeign 远程HTTP服务调用用法与原理
在 openFeign 未出现前,Spring 提供了 RestTemplate 作为远程服务调用的客户端,提供了多种便捷访问远程 Http 服务的方法,能够大大提高客户端的编写效率.由于文章内容会使 ...
- SpringCloud(3)---最简单的 SpringCloud 教程
史上最简单的 SpringCloud 教程 案例全部采用Spring Boot 1.5.x ,Spring Cloud版本为Dalston.RELEASE 码农下载:https://git.oschi ...
最新文章
- 第二十一课.粒子滤波器
- Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs
- SparkSQL 将统计结果保存到Mysql
- org.apache.hadoop.hbase.ClockOutOfSyncException
- C/S、B/S的区别
- iPhone 12 Pro Max机模曝光:有乔布斯内味儿了
- 输入法 java_使用 Utf7ime 输入法实现中文输入 Windows+Java 平台(完整步骤版)
- oracle insert 触发器无效_分享一个超实用的Zabbix监控Oracle用户无效对象手册
- sql server作业_SQL Server作业性能–报告
- java thread类_Java多线程原理及Thread类详解
- java线程池一创建就立马有线程了么_Java 线程池二之Executors创建的五种线程池及使用注意...
- NSIS 安装打包安装程序
- 怎样看python源代码-如何查看python源代码
- 嵌入式软件设计层级划分概念
- Jmeter HTTP Proxy Server 代理录制 IE无法录制到请求的问题解决
- VUE项目引入公共样式的styl文件
- Java类的声明详解
- 大学计算机基础与计算思维习题,大学计算机基础与计算思维客观题及答案.doc...
- eclipse常用快捷方式
- 11月20日 如何在场景开启Debug,自定义AI任务,EQS,创建自己的环境任务,使用Pawn环境检测来检测周围的环境,让AI动作更顺滑(动画混合