SpringCloud Consul自定义服务注册
SpringCloud自定义consul服务注册器,获取特定的本地地址进行注册,注销的时候检查并注销其他无效实例
package com.mk.springcloud.config;import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.agent.model.NewService;
import com.ecwid.consul.v1.health.HealthServicesRequest;
import com.ecwid.consul.v1.health.model.Check;
import com.ecwid.consul.v1.health.model.HealthService;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.discovery.HeartbeatProperties;
import org.springframework.cloud.consul.discovery.TtlScheduler;
import org.springframework.cloud.consul.serviceregistry.ConsulRegistration;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry;
import org.springframework.stereotype.Service;import java.net.Inet4Address;
import java.util.*;@Service
public class ConsulRegistry extends ConsulServiceRegistry {private ConsulDiscoveryProperties properties;private ConsulClient consulClient;@Value("${spring.application.name}")private String applicationName;public ConsulRegistry(ConsulClient client, ConsulDiscoveryProperties properties, @Autowired(required = false) TtlScheduler ttlScheduler, HeartbeatProperties heartbeatProperties) {super(client, properties, ttlScheduler, heartbeatProperties);this.properties = properties;this.consulClient = client;}@SneakyThrows@Overridepublic void register(ConsulRegistration reg) {//获取服务器的ipString address = Inet4Address.getLocalHost().getHostAddress();NewService newService = reg.getService();newService.setAddress(address);newService.getCheck().setHttp("http://" + address + ":" + reg.getService().getPort() + properties.getHealthCheckPath());newService.setId(reg.getService().getName() + "-" + address + ":" + reg.getService().getPort() + "-" + UUID.randomUUID().toString().replace("-",""));super.register(reg);}@Overridepublic void deregister(ConsulRegistration reg) {super.deregister(reg);//查询no pass的服务实例HealthServicesRequest request = HealthServicesRequest.newBuilder().setPassing(false).build();List<HealthService> services = consulClient.getHealthServices(applicationName, request).getValue();for (HealthService service : services) {for (Check check : service.getChecks()) {//注销无效实例if (check.getStatus() != Check.CheckStatus.PASSING) {consulClient.agentServiceDeregister(check.getServiceId());}}}}
}
SpringCloud Consul自定义服务注册相关推荐
- Consul微服务注册与发现
Consul微服务注册与发现 概念 安装与运行 服务提供者 服务消费者 总结:Eureka.Zookeeper.Consul 的异同 概念 1.什么是Consul? Consul是一套开源的分布式服务 ...
- .net core grpc consul 实现服务注册 服务发现 负载均衡(二)
在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...
- Node.js + Consul 实现服务注册、健康检查、配置中心
Node.js + Consul 实现服务注册.健康检查.配置中心 在这篇文章中: 初始化 Consul 客户端 服务注册与健康检查 配置Consul管理控制台 服务配置中心实现 在Nodejs中进行 ...
- 一个故事,一段代码告诉你如何使用不同语言(GolangC#)提供相同的能力基于Consul做服务注册与发现
文章目录 引言 什么是微服务 传统服务 微服务 什么是服务注册与服务发现 为什么要使用不同的语言提供相同的服务能力 服务协调器 服务注册 Golang C#(.NetCore3.1) 服务发现 通过H ...
- 『注册中心』Consul微服务注册中心的使用及相关集群搭建
Consul目录 一.概念篇--注册中心 1. 什么是注册中心 2. 为什么要使用注册中心 3. 注册中心类型 4. 注册中心的优点 二.概念篇--Consul 1. 什么是Consul 2. Con ...
- SpringCloud学习之(十八)SpringCloud Alibaba Nacos服务注册和配置中心
文章目录 (十八)SpringCloud Alibaba Nacos服务注册和配置中心 1.Nacos简介 1.1 为什么叫Nacos 1.2 Nacos是什么 1.3 Nacos能干嘛 1.4 Na ...
- Spring Cloud中使用Consul作为服务注册中心时如何获得local service id?
微服务是目前非常流行和实用的软件架构设计.Spring Cloud是java开发领域最受欢迎也是常用的微服务框架.Spring Cloud Finchley版本已经发布,与此同时Eureka 2.0的 ...
- Consul2-使用consul作为服务注册和发现中心
在windows环境下搭建consul,可以参考我的上一篇博客:https://blog.csdn.net/j903829182/article/details/80960802 在这里进行一个小实战 ...
- SpringCloud系列之服务注册中心(Eureka)
文章目录 0.前言 1.搭建第一个Eureka服务 ①.简介 ②.组成 ③.创建Eureka Server模块 ④.编写POM ⑤.YML ⑥.主启动 ⑦.测试 2.注册服务 ①服务提供者 Ⅰ.添加依 ...
最新文章
- 计算机协会成立活动简报,“中国计算机学会CCF走进高校”活动在我校举行
- 码农技术炒股之路——抓取日线数据、计算均线和除权数据
- 启信宝CEO陈青山:AI+大数据驱动下的金融新生态
- 聚类、K-Means、例子、细节
- AngularJS日期格式化
- 冷迁移oracle数据库,数据库的冷备份迁移
- 前端三大框架 Vue.js、AngularJS、React 的区别
- ffmpeg处理RTMP流媒体的命令大全
- C++ 中缀表达式转后缀表达式(两种方式:栈、二叉树)
- 正态分布推导瑞利分布,瑞利信道的模型
- 键盘锁定了,无法输入是什么原因?
- Matlab龚珀兹曲线模型预测,统计预测方法及预测模型.ppt
- 骁龙780G和骁龙888哪个好 骁龙780G和骁龙888对比,哪个更强
- 如何给电脑安装双系统,电脑安装双系统教程
- The 19th Zhejiang Provincial Collegiate Programming Contest 2022浙江省赛 (A/B/C/G/L/I)
- 建立桌面文件管理格子_如何拥有一个清爽的桌面和整齐的文件夹
- mysql差异备份提权_MSSQL差异备份取系统权限的相关软件下载
- TNS-01189、TNS-01106
- 书虫小说在线阅读网站
- 【蓝桥杯选拔赛真题08】Scratch画五角星 少儿编程scratch蓝桥杯选拔赛真题讲解
热门文章
- quill变html转化,将Quill Delta转换为HTML
- tcp unity 图片_用 Unity 做个游戏(七) - TCP Socket 客户端
- C++实现链式基数排序
- LeetCode 112路径总和-简单
- 十一届蓝桥杯国赛 本质上升序列-dp
- 上元节的灯会(亮)-dfs
- 仅仅有人物没背景的图片怎么弄_五分钟写作课 人物篇 人物的出场是个关键时刻...
- 数据结构与算法--举例分析法- 栈的压入弹出序列
- Redis高级数据结构原理解析-bitmap,hyperloglog
- JAVA两类比较器的区别(Comparable,Comparator)