spring cloud netflix eureka ribbon 示例
来源:互联网 发布:黄金投资软件 编辑:程序博客网 时间:2024/06/06 05:19
示例分三部分,
eureka-server 服务注册中心
eureka-provider 服务提供者
eureka-consumer 服务调用者
eureka-server 服务注册中心
简单的 boot
package com.yonyou;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer //开启eureka服务@SpringBootApplication //springBoot注解,spring在springBoot基础之上来构建项目public class EurekaServiceApplication { //spirng boot的标准入口 public static void main(String[] args) { SpringApplication.run(EurekaServiceApplication.class, args); }}
配置文件
spring.application.name=eureka-serverserver.port=8888eureka.client.register-with-eureka=falseeureka.client.fetch-registry=falselogging.level.com.netflix.eureka=OFFlogging.level.com.netflix.discovery=OFFeureka.client.serviceUrl.defaultZone=http://127.0.0.1:${server.port}/eureka/
eureka-provider 服务提供者
package com.yonyou;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;/** * @author Administrator * */@EnableDiscoveryClient //通过该注解,实现服务发现,注册@SpringBootApplicationpublic class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); }}@RestControllerclass ServiceInstanceRestController { @Autowired private DiscoveryClient discoveryClient; @RequestMapping("/service-instances/{applicationName}") public List<ServiceInstance> serviceInstancesByApplicationName( @PathVariable String applicationName) { return this.discoveryClient.getInstances(applicationName); } @RequestMapping("/info") public String sayhello() { return "client-student"; }}
服务功能
package com.yonyou.student.web;import java.util.ArrayList;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import com.yonyou.student.Student;@RestController@RequestMapping("/student")class StudentController { @RequestMapping("list") public List<Student> list() { List<Student> list = new ArrayList<Student>(); list.add(new Student(111,"yaoming","156787787823","china shanghai")); list.add(new Student(222,"chenglong","13898687682","china hongkong")); list.add(new Student(333,"lilianjie","187923420023","china beijing")); return list; } }
配置
spring.application.name=eureka-providerserver.port=7070logging.level.com.netflix.eureka=OFFlogging.level.com.netflix.discovery=OFFeureka.client.serviceUrl.defaultZone=http://127.0.0.1:8888/eureka/
eureka-consumer 服务调用者
boot 和 调用服务
package com.yonyou;import java.net.URI;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;import org.springframework.context.annotation.Bean;import org.springframework.http.client.SimpleClientHttpRequestFactory;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;/** * @author Administrator * */@EnableDiscoveryClient //通过该注解,实现服务发现,注册@SpringBootApplicationpublic class EurekaClientApplication { /** * LoadBalanced 注解表明restTemplate使用LoadBalancerClient执行请求 */ @Bean @LoadBalanced public RestTemplate restTemplate() { RestTemplate template = new RestTemplate(); SimpleClientHttpRequestFactory factory = (SimpleClientHttpRequestFactory) template.getRequestFactory(); factory.setConnectTimeout(3000); factory.setReadTimeout(3000); return template; } public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); }}@RestControllerclass ServiceInstanceRestController {@Autowired@LoadBalancedRestTemplate restTemplate; @Autowired private DiscoveryClient discoveryClient; @RequestMapping("/service-instances/{applicationName}") public List<ServiceInstance> serviceInstancesByApplicationName( @PathVariable String applicationName) { return this.discoveryClient.getInstances(applicationName); } @RequestMapping("/info") public String sayhello() { return "client-teacher"; } // Restful服务对应的url地址 @Value("${rest.student.list}") private String restStudentList; @RequestMapping("/students") public String test() { // ServiceInstance instance = loadBalancer.choose("eureka-client-student");// URI uri = instance.getUri(); List list = restTemplate.getForObject(restStudentList, List.class); return list.toString(); } }
配置文件
spring.application.name=eureka-consumerserver.port=6060logging.level.com.netflix.eureka=OFFlogging.level.com.netflix.discovery=OFFeureka.client.serviceUrl.defaultZone=http://127.0.0.1:8888/eureka/rest.student=http://eureka-provider:7070rest.student.list=${rest.student}/student/list
效果图
注册中心,看到注册的应用
查看provider 自身的服务
使用consumer 调用 provider的服务
示例下载地址:
http://download.csdn.net/detail/stonexmx/9769755
0 0
- spring cloud netflix eureka ribbon 示例
- Spring Cloud Netflix Eureka
- spring cloud eureka zuul ribbon hystrix feign config 示例
- Spring Cloud Netflix的3大组件应用 Eureka&Ribbon&Hystrix
- Spring Cloud Eureka+Ribbon+Hystrix
- Spring Cloud Netflix 教程(Feign+Ribbon+Hystrix)
- Spring Cloud Netflix之Eureka Doc Translation
- Spring Cloud Netflix之Eureka Client Configuration
- Spring Cloud实战(三)-Spring Cloud Netflix Ribbon
- Spring Cloud Netflix负载均衡组件Ribbon介绍
- spring-cloud-netflix eureka服务添加基本用户验证
- Spring Cloud Netflix Eureka源码导读与原理分析
- Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****
- Spring Cloud Netflix Eureka源码导读与原理分析
- Spring Cloud Netflix Eureka源码导读与原理分析
- Spring Cloud Netflix Eureka源码导读与原理分析
- 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端
- 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器
- 基于注解@Aspect的AOP实现
- 通知与消息机制_本地通知
- hrbust 2270 从前的宝藏
- 5-9 用天平找小球 (10分)
- Linux常用命令
- spring cloud netflix eureka ribbon 示例
- 关于更新studio版本下载gradle失败做一个总结
- 浅谈Java中的Filter过滤器
- VLC初始加载优化:avformat_find_stream_info接口延迟降低
- struts中在Action里写了setter方法接受不到参数
- python新手必碰到的问题---encode与decode,中文乱码
- PHP遍历文件夹及子文件夹所有文件
- OTT不允许做电视频道直播,但活动直播并未有文件禁止
- 修改openstack Centos镜像的默认用户的密码