需要与Eureka结合使用

Eureka环境搭建

Producer

一、pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>peter.test</groupId><artifactId>producer1</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>producer1</name><description>Demo project for Spring Eureka Producer</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>10</java.version><spring-cloud.version>Finchley.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.0</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

View Code

二、application.yml文件

---
spring:application:name: spring-cloud-producerprofiles: producer1
server:port: 9010
eureka:instance:hostname: peterhost1#ip-address: 127.0.0.1#prefer-ip-address: trueclient:service-url:defaultZone: http://peterhost1:9000/eureka/

View Code

三、启动注解与Rest Controller

@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan({"peter.test.producer1","Service"})
public class Producer1Application {public static void main(String[] args) {SpringApplication.run(Producer1Application.class, args);}
}@RestController
class TestController{@RequestMapping("/test")public String index(){return "peter host.";}@RequestMapping("/test2")public String index(@RequestParam String name) {return "hello "+name+",this is first messge";}}

View Code

Consumer

一、pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>peter.test</groupId><artifactId>consumer1</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>consumer1</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>10</java.version><spring-cloud.version>Finchley.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.0</version></dependency><!--Monitor--><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-hystrix --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-hystrix-dashboard --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--turbine--><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-netflix-turbine --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-turbine</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-turbine --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-turbine</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

View Code

二、application.yml文件

---
spring:application:name: spring-cloud-consumer1profiles: consumer1
server:port: 9021
feign:hystrix:enabled:true
eureka:instance:hostname: peterhost1client:service-url:defaultZone: http://peterhost1:9000/eureka/

View Code

三、FeignClient请求Producer

@FeignClient(name= "spring-cloud-producer",fallback =Producer1ServiceHelloHystrix.class)
@Component
public interface Producer1Service {@RequestMapping(value = "/hello")public String hello(@RequestParam(value = "name") String name);}

View Code

name="spring-cloud-producer" 指明producer在Eureka中注册的服务名称

四、Hystrix断路器实现

@Component
public class Producer1ServiceHelloHystrix implements  Producer1Service{@Overridepublic String hello(String name) {return "hello" +name+", this messge from hystrix. ";}
}

View Code

五、Consumer对外提供的Controller

@RestController
public class ConsumerController {@AutowiredProducer1Service producer1Service;@RequestMapping("/hello/{name}")public String index(@PathVariable("name") String name) {System.out.println("log begin\r\n");String remoteResult="Air";System.out.println(producer1Service.toString());try{if(producer1Service==null)   {remoteResult="Null remote service.";System.out.println("Null remote service.\r\n");}elseremoteResult=producer1Service.hello(name);}catch (Exception ex){remoteResult+="\r\n"+ex.getMessage()+ex.getCause()+ex.getStackTrace().toString();}return remoteResult;}@Autowiredprivate DiscoveryClient discoveryClient;@RequestMapping("/service-instances/{applicationName}")public List<ServiceInstance> serviceInstancesByApplicationName(@PathVariable String applicationName) {return this.discoveryClient.getInstances(applicationName);}}

View Code

六、运行

负载均衡

新建一个Producer的项目,为了区分把Controller中返回的信息做一些调整即可

一、application.yml文件

---
spring:application:name: spring-cloud-producerprofiles: producer2
server:port: 9011
eureka:instance:hostname: peterhost2#ip-address: 127.0.0.1#prefer-ip-address: trueclient:service-url:defaultZone: http://peterhost2:9001/eureka/

View Code

spring.application.name要和前面一个producer的一样,此处是spring-cloud-producer

二、运行

新的Producer注册至Eureka会有一定的延迟

转载于:https://www.cnblogs.com/dopeter/p/9404796.html

Producer Consumer相关推荐

  1. .net IO异步和Producer/Consumer队列实现一分钟n次http请求

    简介 最近工作中有一个需求:要求发送http请求到某站点获取相应的数据,但对方网站限制了请求的次数:一分钟最多200次请求. 搜索之后,在stackoverflow网站查到一个类似的问题..但里面用到 ...

  2. Kafka入门教程其一 消息队列基本概念 及常用Producer Consumer配置详解学习笔记

    文章目录 1. 综述 2. 消息队列(Message Queue) 2.1 点对点 2.2 发布/订阅(pub-sub) 3. Kafka基础术语解释 3.1 Broker 3.2 Partition ...

  3. java多线程并发之旅-09-java 生产者消费者 Producer/Consumer 模式

    生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产 ...

  4. 你说五毛就五毛? 生产者消费者模式(Producer Consumer Pattern)来讲解

    目的 效率型设计模式, 意义在于不阻塞主流程的同时完成异步操作, 比如发邮件短信, 完成耗时的任务等 例子代码 最近蜂巢收费 5 毛的事件引起了业主和物业的强烈反对, 5 毛钱其实也不是很多, 掉地上 ...

  5. 学习笔记Kafka(六)—— Kafka Consumer API及开发实例

    一.Kafka Consumer API 1.1.Consumer 1.2.KafkaConsumer 1.3.ConsumerRecords 1.4.ConsumerRecord 1.5.Kafka ...

  6. rocketmq client端源码分析(1)-consumer实现

    rocketmq客户端实现如果集成了spring-boot则写一个监听就可以实现业务逻辑.这个流程是这样的呢. 首先我们实现了监听接口RocketMQListener或者RocketMQReplyLi ...

  7. RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)

    RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等) 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列 ...

  8. 《Apache Kafka》学习笔记

    1.什么是Kafka Kafka是一个高通过率的分布式消息系统 2.消息队列(Message Queue)MQ的模型 消息队列的简单架构图 3个核心概念: Sender Application:消息队 ...

  9. rocketmq 组监听_最全的RocketMQ学习指南,程序员必备的中间件技能

    一.简介 RocketMq是阿里开发出来的一个消息中间件,后捐献给Apache.官网上是这样介绍的: Apache RocketMQ™ is a unified messaging engine, l ...

最新文章

  1. linux 源码目录结构 文件系统目录结构
  2. 大学期间可以获得哪些荣誉_大学期间没有什么荣誉经历,该怎么写简历呢?找工作会很难吗?...
  3. Confluence 6 CSS 编辑快速入门
  4. MySQL学习(十五)
  5. 开发实习生做什么_实习生月薪6W,还有住房补贴!投行前台到底是做什么的?...
  6. 请问当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?
  7. 在ASP.NET页面中动态添加控件
  8. python缓冲区_如何在Python中使用Google的协议缓冲区
  9. Python中的星号:用途及使用方法(下篇)
  10. jieba分词,构建词典
  11. 【算法笔记】B1058 选择题
  12. Shellex:针对shellcode的转换与处理工具
  13. 【历史上的今天】9 月 3 日:谷歌发布 Android 10;微软收购诺基亚;eBay 诞生
  14. VTK:图形基本操作进阶——连通区域分析
  15. 补点C#基础_022_json校验和json在线编辑器-bejson
  16. 评测3款高颜值的安卓txt阅读器
  17. linux 虚拟光驱软件,在Linux操作系统下使用虚拟光驱的方法
  18. 支付宝官方支付接口申请配置教程(如何开通支付宝支付接口)
  19. b5对战平台服务器位置,b5对战平台客户端
  20. 光会码数,没有结论?试试这5种分析方法

热门文章

  1. 用正则表达式抽取文本
  2. Hibernate征途(三)之CRUD
  3. 龙格库塔法和欧拉法求解微分方程的比较
  4. c语言网络定向拉取数据,用C模拟了一个http请求,但是recv函数接收的数据不完整且欠安顺序获取信息...
  5. C#之多态与继承汽车类
  6. 框架下载_最新安卓XDA框架插件下载仓库
  7. java 获取pdf总页数_如何获取PDF文件的总页数 - iTextSharp,c#
  8. Gemini创始人:如果我是GameStop CEO 接下来我会买BTC
  9. SAP License:SAP复制和默认快捷小贴士
  10. 策略的静态与动态报表——绝对值得收藏的策略资料(文尾视频)