启动Eureka注册中心之后,服务提供方就可以注册到Eureka上去(作为一个Eureka的客户端)

我们使用IDEA提供的spring initializer来新建一个springcloud项目

填写相关的包名等信息:

选择web和Erureka Discorvery

填写Gradle等相关信息完成创建

我们需要在启动类里边增加注解 @EnableDiscoveryClient 来标识这是一个Eureka客户端

启动类的代码如下:

package com.jiaoyiping.springcloud.provider;

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

创建一个我们用来真正提供服务的Controller(在本例中,我们假设从路径中取到两个int值,将他们的和用字符形式返回,代码如下):

package com.jiaoyiping.springcloud.provider;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class ProductionController {
//简单计算两个数字的和,转换为字符串返回
@RequestMapping(value = "/add/{a}/{b}")
public String add(@PathVariable("a") int a, @PathVariable("b") int b) {
return (a + b) + "";
}
}

修改应用的配置文件,指定服务的名称,网卡信息和eureka等相关信息:配置文件如下:

spring:
application:
name: provider
cloud:
inetutils:
preferred-networks: 192.168.1.
server:
port: 8082
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8081/eureka
instance:
prefer-ip-address: true
instance-id: 192.168.1.5:${server.port}

运行启动类,可以在eureka的页面上看到一个名为provider的服务已经注册上去了:

服务的消费方:

服务的消费方也是和服务提供方一样,也会到Eureka中去注册,按照上边的步骤,我们新建一个consumer项目,比前边的provider多加上Feign的依赖

在启动类上边,多加两个注解:

@EnableFeignClients
@EnableDiscoveryClient

启动类的代码如下:

package com.jiaoyiping.springcloud.consumer;

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
@EnableFeignClients
@EnableDiscoveryClient
public class ConsumerApplication { public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}

新建一个ProductControllerRemote接口,作为FeignClient,里边定义的方法和服务提供方的方法一致;

package com.jiaoyiping.springcloud.consumer;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "provider")
public interface ProductControllerRemote {
@RequestMapping(value = "/add/{a}/{b}")
String add(@PathVariable("a") int a, @PathVariable("b") int b);
}

@FeignClient注解的name,指的是注册到eureka上的应用的名称(在服务提供方的spring的配置文件里配置) 接口的方法映射到服务提供方的相应的方法上,只需要定义,不需要实现,Feign会自动调用服务提供方的相应的方法

使用@FeignClient注解的这个类,可以作为一个spring的bean,注入到需要的地方去,直接调用相应的方法即可

作为例子,我们在消费方新定义一个Controller,来调用ProductControllerRemote:

package com.jiaoyiping.springcloud.consumer;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsumerController {
@Autowired
private ProductControllerRemote productControllerRemote; @RequestMapping("/getresult/{a}/{b}")
public String getResult(@PathVariable("a") int a, @PathVariable("b") int b) {
return productControllerRemote.add(a, b);
}
}

然后是消费方的配置文件,需要配置Eureka的地址和服务的端口等信息:

spring:
application:
name: cunsumer
cloud:
inetutils:
preferred-networks: 192.168.1.
server:
port: 8083
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8081/eureka/
instance:
prefer-ip-address: true
instance-id: 192.168.1.5:${server.port}

启动消费方的启动类,可以看到,消费方也被注册到Eureka中去了:

使用postman调用消费方对外提供的接口,我们可以看到,消费方调用了服务提供方提供的服务,正确的返回了结果:

基于spring-cloud的微服务(2) eureka服务提供方的注册和消费方的消费的更多相关文章

  1. 基于Spring Cloud的微服务入门教程

    (本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...

  2. 干货|基于 Spring Cloud 的微服务落地

    转自 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的 ...

  3. 基于Spring Cloud的微服务落地

    微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务 ...

  4. 基于 Spring Cloud 的微服务架构实践指南(下)

    show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...

  5. Spring Cloud(二):Eureka 服务注册中心

    前言 服务治理 随着业务的发展,微服务应用也随之增加,这些服务的管理和治理会越来越难,并且集群规模.服务位置.服务命名都会发生变化,手动维护的方式极易发生错误或是命名冲突等问题.而服务治理正是为了解决 ...

  6. 基于 Spring Cloud 的微服务架构实践指南(上)

    show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...

  7. Spring Cloud(二)服务提供者 Eureka + 服务消费者(rest + Ribbon)

    Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时 ...

  8. spring cloud 系列第1篇 —— eureka 服务的注册与发现 (F版本)

    源码仓库地址:https://github.com/heibaiying/spring-samples-for-all 一.eureka 简介 Spring Cloud Eureka使用Netflix ...

  9. Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign

    上一篇文章,讲述了如何通过RestTemplate + Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务. Feign简介 Feign是一个声明式的伪Http客户端,它使得写Htt ...

  10. 画了一张基于Spring Cloud的微服务系统架构图

随机推荐

  1. 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 su命令 切换用户 [root@centos_1 ~]# su - xiaobo [root@centos_1 ~]# su - ...

  2. RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”

    转自http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html 备忘 rpm 执行安装包 二进制包(Binary ...

  3. lsof fuser

    使用fuser 或 lsof在一个挂载点中查找已打开的文件 fuser -mv /usr 查看有哪些进程在运行/usr中资源 sync fuser -km /media/usbdisk U盘无法卸载

  4. Unity Shader-描边效果

    原文链接:http://blog.csdn.net/puppet_master

  5. Python爬虫-爬取科比职业生涯高清图集

    前面学习了Python爬取豆瓣电影Top250的数据,爬取的信息是电影信息的文本信息,但是在互联网上流行的图片才有更大的吸引力,本篇我们来使用python爬取网页上的图片并保存在本地硬盘上,很兴奋吧, ...

  6. 自动构建工具Gulp

    摘要:  gulp与grunt一样,都是自动构建工具.和grunt相比它更突出一个流的概念,任务是一个接一个执行的.今天就分享如何用gulp做自动化. 安装: gulp也是基于node环境,所以安装g ...

  7. 阿里云被挖矿使用,导致cpu长期处于100%,ddgs进程,xWx3T进程,关于redis密码

    1.使用top命令,查看到一个叫xWx3T的进程cpu占用99.8%,由于我的阿里云是单核的,所以最高只能100%. 把它用kill命令杀死后,过一会儿又启动了,又占用100%. 使用ps -ef可以 ...

  8. 递归的几个demo

    /** * Created by root * Description : 递归函数 */ object RecursionTest { def main(args: Array[String]): ...

  9. 如何编写一个SQL注入工具

    0x01  前言 一直在思考如何编写一个自动化注入工具,这款工具不用太复杂,但是可以用最简单.最直接的方式来获取数据库信息,根据自定义构造的payload来绕过防护,这样子就可以. 0x02 SQL注 ...

  10. linux 信息收集脚本。转自insight-labs

    找出所有.sh .pl .py .conf .cnf .ini .*history .*pass* (/usr/share目录里面的除外) 并且在当前目录zip打包.有些时候很多配置文件的权限配置不严 ...