SpringCloud发现服务代码(EurekaClient,DiscoveryClient)
1.说明
本文介绍SpringCloud发现服务代码的开发,
通过使用EurekaClient,DiscoveryClient来发现注册中心的服务等,
从而可以自定义客户端对注册中心的高级用法。
2.使用EurekaClient发现服务
通过Spring自动注入的EurekaClient,
不仅能发现服务实例,
还能查看客户端连接等各种配置。
2.1.代码
package com.yuwen.spring.config.client.controller;import java.util.List;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.EurekaClientConfig;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.Applications;@RestController
public class EurekaClientController {private static Logger logger = LoggerFactory.getLogger(DiscoveryClientController.class);@Autowiredprivate EurekaClient eurekaClient;@GetMapping("/eureka")public String getEurekaClient() {EurekaClientConfig config = eurekaClient.getEurekaClientConfig();if (!(config instanceof EurekaClientConfigBean)) {return eurekaClient.toString();}EurekaClientConfigBean eurekaConfig = (EurekaClientConfigBean) config;logger.info("serviceUrl=" + eurekaConfig.getServiceUrl());Applications applications = eurekaClient.getApplications();List<Application> registeredApplications = applications.getRegisteredApplications();for (Application application : registeredApplications) {logger.info("Application Name=" + application.getName());List<InstanceInfo> instances = application.getInstances();for (InstanceInfo instance : instances) {StringBuilder sb = new StringBuilder();sb.append(instance.getAppName()).append("\t").append(instance.getHostName()).append("\t").append(instance.getPort()).append("\t").append(instance.getVIPAddress());logger.info("InstanceInfo=" + sb);}}return eurekaClient.toString();}
}
2.2.测试
使用浏览器访问:
http://localhost:8005/eureka
页面返回:
org.springframework.cloud.netflix.eureka.CloudEurekaClient@6715470c
控制台打印:
serviceUrl={fetch-registry=true, defaultZone=http://localhost:7007/eureka, register-with-eureka=true}
Application Name=CONFIG-CLIENT
InstanceInfo=CONFIG-CLIENT 192.168.171.1 8005 config-client
3.使用DiscoveryClient发现服务
使用DiscoveryClient可以发现注册中心上的服务,
注册中心可以是Eureka,也可以是Zookeeper等,
因为不使用原始Netflix EurekaClient,
所以在某种包装器后面的DiscoveryClient更易于使用。
它也能提供通过服务名称查询对应的所有服务实例等功能。
3.1.代码
package com.yuwen.spring.config.client.controller;import java.util.List;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DiscoveryClientController {private static Logger logger = LoggerFactory.getLogger(DiscoveryClientController.class);@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/discovery")public Object getDiscoveryClient() {List<String> services = discoveryClient.getServices();for (String service : services) {logger.info("service=" + service);}String serviceId = "CONFIG-CLIENT";List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);for (ServiceInstance instance : instances) {StringBuilder sb = new StringBuilder();sb.append(instance.getServiceId()).append("\t").append(instance.getHost()).append("\t").append(instance.getPort()).append("\t").append(instance.getUri());logger.info("instance=" + sb);}return discoveryClient;}
}
3.1.测试
使用浏览器访问:
http://localhost:8005/discovery
页面返回:
config-client00config-client0
控制台打印:
service=config-client
instance=CONFIG-CLIENT 192.168.171.1 8005 http://192.168.171.1:8005
可以看到Eureka上面只有一个服务CONFIG-CLIENT,
这个服务只有一个实例http://192.168.171.1:8005,
其实就是提供http://localhost:8005/discovery这个服务的实例。
http://www.taodudu.cc/news/show-1250983.html
相关文章:
- SpringBoot集成Actuator监控管理
- SpringBoot集成Actuator端点配置
- SpringBoot集成Actuator健康指示器health
- gRPC创建Java RPC服务
- ProtoBuf3语法指南(Protocol Buffers)_上
- ProtoBuf3语法指南(Protocol Buffers)_下
- gPRC基本介绍
- Log4j2日志框架集成Slf4j日志门面
- XML解析的四种方式
- XML解析和创建的JAXB方式
- 【转载】JSON介绍
- Elasticsearch单机安装Version7.10.1
- Drools创建Maven工程
- Java二、八、十、十六进制介绍
- Drools集成SpringBoot
- Drools集成SpringBootStarter
- Jsonschema2pojo从JSON生成Java类(Maven)
- YangTools从YANG生成Java类(Maven)
- GitBash添加tree命令
- SpringBoot集成Maven工程
- SpringBoot开发Restful接口
- Notepad++便签模式
- SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)
- PowerDesigner生成数据库刷库脚本
- PowerDesigner生成数据库设计文档
- Eclipse配置国内镜像源
- PingInfoView批量PING工具
- Git合并两个不同的仓库
- Guava事件处理组件Eventbus使用入门
- Junit4集成到Maven工程
SpringCloud发现服务代码(EurekaClient,DiscoveryClient)相关推荐
- Eclipse启动SpringCloud微服务集群的方法
1.说明 下面这篇文章介绍了Eureka Server集群的启动方法, SpringCloud创建Eureka模块集群 是通过jar包启动时指定配置文件的方式实现的. 现在只有Eureka Serve ...
- springcloud微服务系列之服务注册与发现组件Eureka
一.Eurake的简介 二.使用Eureka进行服务的注册消费 1.创建一个服务注册中心 2.创建服务的提供者 3.创建服务的消费者 总结 一.Eurake的简介 今天我们来介绍下springclou ...
- SpringCloud——Eureka服务注册和发现
一.SpringCloud和Dubbo SpringCloud整合了一套较为完整的微服务解决方案框架,而Dubbo只是解决了微服务的几个方面的问题. content Dubbo SpringCloud ...
- SpringCloud微服务:Eureka组件之服务注册与发现
一.Eureka基本架构 1.Eureka角色结构图 角色职责如下: 1).Register:服务注册中心,它是一个Eureka Server ,提供服务注册和发现功能. 2).Provider:服务 ...
- SpringCloud - 2. 服务注册 和 发现
SpringCloud 的服务注册和发现是由Eureka来完成. 1.eureka server 1.1 依赖 <dependency><groupId>org.springf ...
- SpringCloud微服务-服务注册发现-负载均衡-服务调用-服务降级-服务网关-配置中心-消息总线-消息驱动-链路追踪-alibaba-nacos-sentinel-seata理论原理分析
SpringCloud理论技术 概述 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总 ...
- SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务
SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务 - 一.大致介绍 1.众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和 ...
- SpringCloud微服务架构,Spring Cloud 服务治理(Eureka,Consul,Nacos),Ribbon 客户端负载均衡,RestTemplate与OpenFeign实现远程调用
什么是SpringCloud 微服务架构 • "微服务"一词源于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到 http://mar ...
- SpringCloud微服务治理技术入门
1.集群.分布式.微服务 首先先理解三个感念 什么是集群?: 同一个业务,部署在多个服务器上,目的是实现高可用,保证节点可用! 什么是分布式?: 一个业务分拆成多个子业务,部署在不同的服务器上,每个子 ...
最新文章
- windbg调试实例(4)--句柄泄露
- 【译】Thoughts and Goals on Qtum's x86 VM
- AI入门:Transfer Learning(迁移学习)
- java(3)——数据类型中的数值型的整数类型
- 11岁过python1级_11岁表弟写的Python零基础入门笔记!
- ubuntu+touch+android,移动操作系统Ubuntu Touch支持安卓应用
- SwiftUI 3.0调用SDWebImageSwiftUI 第三方框架
- 作为一个程序员,进步完全取决于自己
- Spring Boot单元测试入门实战之关于JUnit
- 机器学习发展历史回顾
- 如何通过a链接实现图片下载
- vue 中基于drag drop拖放实现左菜单和右画布的功能
- 艺工交叉——观《达芬奇的人生密码》有感
- 《编程之美》买书问题及c语言代码实现
- iphone和iPad开发的区别
- 自然语言处理(NLP)- 一个英文拼写纠错系统
- 架构师速成4.4-我该学什么语言
- Tomcat8安装后tomcat8w.exe点击出现“指定的服务未安装”解决方案
- JAVA电影院售票网站计算机毕业设计Mybatis+系统+数据库+调试部署
- 【美团点评2020校招测试方向笔试题】算法题部分1.删除字符 2.队列组合排序 3.寻找最小子字符串 4.最大矩形 5.最短送餐路程计算