参考:http://www.ityouknow.com/springcloud/2017/05/12/eureka-provider-constomer.html

springboot版本:2.0.3.RELEASE

首先配置一个Erureka server,这里为了方便我们可以使用单机版并启动服务,参考上一篇文章《spring cloud Eureka server配置

provider配置

pom.xml

<dependencies>
<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>
  <!-- 非必须,监控用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

application.yml

spring:
application:
name: spring-cloud-provider
server:
port: 8080
eureka:
client:
service-url:
defaultZone: http://localhost:8765/eureka
# spring boot信息,可选配置
info:
app:
name: spring-cloud-provider-wly
version: 1.0.0

启动类(添加@EnableDiscoveryClient注解,用于注册到Eureka)

package com.wang.eurekaprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication
@EnableDiscoveryClient
public class EurekaproviderApplication { public static void main(String[] args) {
SpringApplication.run(EurekaproviderApplication.class, args);
}
}

controller

package com.wang.eurekaprovider.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* @Author wly
* @Date 2018/6/27 16:15
*/
@RestController
@RequestMapping("/a")
public class HelloController {
@RequestMapping("/b")
public String hello(String name) {
return "Hello World!" + name;
}
}

启动服务并访问

http://localhost:8080/a/b?name=sb

页面展示(chrome浏览器)

Hello World!sb

consumer配置

pom.xml

<dependencies>
<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>
  <!-- 引入feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  <!-- 非必须,监控用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

application.yml

spring:
application:
name: spring-cloud-consumer
server:
port: 8081
eureka:
client:
service-url:
defaultZone: http://localhost:8765/eureka
# spring boot信息,可选配置
info:
app:
name: spring-cloud-consumer-wly
version: 1.0.0

启动类(添加@EnableDiscoveryClient、@EnableFeignClients注解)

package com.wang.eurekaconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class EurekaconsumerApplication { public static void main(String[] args) {
SpringApplication.run(EurekaconsumerApplication.class, args);
}
}

调用接口定义

package com.wang.eurekaconsumer.remote;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; /**
* @FeignClient.name对应provider的spring.appliation.name
* @RequestMapping要和想调用的服务一致,方法名随意,参数名要一致(猜测是用Rest方式调用)
* @Author wly
* @Date 2018/6/27 17:08
*/
@FeignClient(name="spring-cloud-provider")
public interface HelloRemote {
@RequestMapping("/a/b")
public String hahaha(@RequestParam("name")String qqq);
}

controller

package com.wang.eurekaconsumer.controller;

import com.wang.eurekaconsumer.remote.HelloRemote;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* @Description
* @Author wly
* @Date 2018/6/27 17:16
*/
@RestController
@RequestMapping("/a")
public class HelloController {
@Autowired
private HelloRemote helloRemote; @RequestMapping("/c")
public String hello(String name) {
return helloRemote.hahaha(name);
}
}

启动服务并访问

http://localhost:8081/a/c?name=sb

页面展示(chrome浏览器)

Hello World!sb

调用结果和provider一致!

查看Eureka页面(发现服务成功注册)

正常流程:启动服务后应该先看监控注服务是否注册成功~

补充

如果使用不同端口启动多个provider,它会自动的进行负载均衡,有兴趣的同学可以尝试一下。

贴两张provider的图

下面是我同时启动两个provider,通过consumer访问后,provider的控制台效果

spring cloud Eureka client配置(consumer通过Eureka发起对provider的调用)的更多相关文章

  1. Spring Cloud Eureka(六):Eureka Client 如何注册到Eureka Server

    1.本节概要 根据前文我们对Eureka Server 有了一定的了解,本节我们主要学习Eureka Client 与 Eureka Server 如何通讯的及相关通信机制是什么,本文会弄清楚一下几个 ...

  2. spring cloud 入门系列二:使用Eureka 进行服务治理

    服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现. Spring Cloud Eureka是Spring Cloud Netflix 微服务套件的一部分 ...

  3. spring cloud系列教程第四篇-Eureka基础知识

    通过前三篇文章学习,我们搭建好了两个微服务工程.即:order80和payment8001这两个服务.有了这两个基础的框架之后,我们将要开始往里面添加东西了.还记得分布式架构的几个维度吗?我们要通过一 ...

  4. Spring Cloud(2):服务发现(Eureka)

    Spring Cloud Eureka是Spring Cloud Netflix项目下的一个模块,作用是服务的注册和发现,并实现服务治理.它有一个(或一组,以实现高可用)服务注册中心(eureka s ...

  5. spring cloud系列教程第六篇-Eureka集群版

    spring cloud系列教程第六篇-Eureka集群版 本文主要内容: 本文来源:本文由凯哥Java(kaigejava)发布在博客园博客的.转载请注明 1:Eureka执行步骤理解 2:集群原理 ...

  6. spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

    在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的, 但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样 ...

  7. Spring Cloud学习(一):Eureka服务注册与发现

    1.Eureka是什么 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. Eureka ...

  8. Spring Cloud系列(三):Eureka源码解析之服务端

    一.自动装配 1.根据自动装配原理(详见:Spring Boot系列(二):Spring Boot自动装配原理解析),找到spring-cloud-starter-netflix-eureka-ser ...

  9. Spring Cloud系列(四):Eureka源码解析之客户端

    一.自动装配 1.根据自动装配原理(详见:Spring Boot系列(二):Spring Boot自动装配原理解析),找到spring-cloud-netflix-eureka-client.jar的 ...

  10. Spring Cloud之微服务注册到Eureka Server集群

    在Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼ - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中已经搭建好了Eureka Server集群,本文就利用 ...

随机推荐

  1. dp--最大区间和变形-cf-1155D

    dp--最大区间和变形-cf-1155D D. Beautiful Array time limit per test 2 seconds memory limit per test 256 mega ...

  2. Elastic-Job源码分析之AbstractElasticJobExecutor分析

    还记得我们在JobScheduler中,在创建任务详情时,会调用一个建造器JobBuilder来创建一个Job,类型是LiteJob. LiteJob.java /** * Lite调度作业. * * ...

  3. kd树 C++实现

    参考:百科kd-tree /* * kdtree.h * * Created on: Mar 3, 2017 * Author: wxquare */ #ifndef KDTREE_H_ #defin ...

  4. MySQL数据库-错误1166 - Incorrect column name 'xxx' 的解决方法

    在用Navicat for MySQL给MySQL数据库修改表的字段时报如下的错误: 解决方法:检查字段里面是不是有空格,去掉就可以了.

  5. iOS傻金币动画

    项目要做一个撒金币签到的动画,分享出来 金币.zip,其中有几个做的时候注意的点. 1.金币掉入口袋的过程,有入口袋的效果. 开始做的时候直接把金币添加到底部的View上这样入口袋的时候,口袋里边显示 ...

  6. html锚点使用示例

    <html> <body> <h1>HTML 教程目录</h1> <ul> <li><a href="#C1&q ...

  7. pythonchallenge(七)

    转眼间又一个月没有逛博客园,明显的感觉到自己的代码能力变弱,前两周搞项目去了,只是形式上面的答辩而已,并没有涉及到代码层面,也就玩了一下验证码,没有识别玩出校器网页的验证码:转眼间又是各种考试,所幸, ...

  8. Vue生命周期学习

    转自https://www.w3cplus.com/vue/vue-instances-and-life-cycles.html Vue实例虽然没有完全遵循MVVM模型,但Vue的设计无疑受到了它的启 ...

  9. static关键字作用

    之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static.final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否 ...

  10. 【SSH网上商城项目实战12】添加和更新商品功能的实现

    转自: https://blog.csdn.net/eson_15/article/details/51366370 添加商品部分原理和添加商品类别是一样的,不过要比商品类别复杂,因为商品的属性有很多 ...