300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 简单上手springcloud eureka加fengin实现服务调用

简单上手springcloud eureka加fengin实现服务调用

时间:2020-09-06 15:29:24

相关推荐

简单上手springcloud eureka加fengin实现服务调用

一、搭建eureka服务端

idea智能创建eureka客户端和服务端

我们创建的是单机版的服务端配置文件如下

server:port: 8761eureka: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: 8765spring: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,第一次写博客

要是觉得有帮助,欢迎给个赞鼓励鼓励呗~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。