前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Eureka的事件通知机制(一)

Eureka的事件通知机制(一)

原创
作者头像
堕落飞鸟
发布于 2023-04-06 23:35:22
发布于 2023-04-06 23:35:22
1.5K10
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

Eureka的事件通知机制可以让Eureka Server在服务注册、取消注册、服务实例上线、下线等事件发生时发送通知消息给Eureka客户端。这个功能对于实时更新服务的状态信息和维护服务的动态拓扑结构非常有用。在本文中,我们将介绍Eureka的事件通知机制的工作原理、用法和示例代码。

工作原理

Eureka的事件通知机制使用了Netflix的RxJava库来实现异步消息传递。当Eureka Server中的服务注册、取消注册、服务实例上线、下线等事件发生时,Eureka Server将发送一个异步消息给所有的Eureka客户端。Eureka客户端可以注册一个EventListener来监听这些事件,并在事件发生时执行相应的操作。

用法

要使用Eureka的事件通知机制,我们需要在Eureka客户端中注册一个EventListener。这个监听器需要实现EventListener接口,并重写相应的事件处理方法。以下是一个示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Component
public class MyEventListener implements EventListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyEventListener.class);

    @Override
    public void onEvent(EurekaEvent event) {
        if (event instanceof EurekaInstanceRegisteredEvent) {
            EurekaInstanceRegisteredEvent registeredEvent = (EurekaInstanceRegisteredEvent) event;
            LOGGER.info("Service instance registered: {}", registeredEvent.getInstanceInfo().getInstanceId());
        } else if (event instanceof EurekaInstanceRenewedEvent) {
            EurekaInstanceRenewedEvent renewedEvent = (EurekaInstanceRenewedEvent) event;
            LOGGER.info("Service instance renewed: {}", renewedEvent.getInstanceInfo().getInstanceId());
        } else if (event instanceof EurekaInstanceCanceledEvent) {
            EurekaInstanceCanceledEvent canceledEvent = (EurekaInstanceCanceledEvent) event;
            LOGGER.info("Service instance canceled: {}", canceledEvent.getServerId());
        } else if (event instanceof EurekaRegistryAvailableEvent) {
            LOGGER.info("Eureka registry available");
        } else if (event instanceof EurekaServerStartedEvent) {
            LOGGER.info("Eureka server started");
        }
    }
}

在上面的代码中,我们创建了一个名为MyEventListener的事件监听器,它会监听Eureka Server中的服务注册、取消注册、服务实例上线、下线等事件。每当一个事件发生时,相应的处理方法就会被执行。

在使用EventListener时,我们还需要在application.yml文件中启用Eureka事件通知机制。以下是相应的配置代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    preferIpAddress: true
    leaseRenewalIntervalInSeconds: 10
    metadataMap:
      instanceId: ${spring.application.name}:${server.port}
  server:
    enableSelfPreservation: false
    waitTimeInMsWhenSyncEmpty: 0
  event:
    enable-on-demand-update: true
    buffer-size: 1000
    initial-buffer-size: 10
    shutdown-timeout-seconds: 10

在上面的配置代码中,我们启用了Eureka事件通知机制并设置了相应的配置参数。其中,enable-on-demand-update配置项启用了事件通知机制,buffer-size配置项设置了事件缓存的最大容量,initial-buffer-size配置项设置了初始缓存容量,shutdown-timeout-seconds配置项设置了Eureka Server关闭时等待所有事件处理完毕的超时时间。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
为什么我的eureka没有event的属性
为什么我的eureka没有event的属性
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Eureka的事件通知机制(二)
接下来,我们将通过一个完整的示例来展示Eureka事件通知机制的用法。我们将创建一个Eureka Server和一个Eureka客户端,并演示在服务实例注册、取消注册、服务实例上线、下线等事件发生时如何使用Eureka事件通知机制。
堕落飞鸟
2023/04/07
6660
Spring Cloud Eureka 总结
它主要记录各个微服务和微服务地址的映射关系,各个微服务都将自己注册到这个注册中心上面,当微服务之间需要互相调用时,就可以从注册中心上面去发现微服务和进行调用。
EalenXie
2020/09/21
6510
Spring Cloud Eureka 总结
微服务心跳监测机制讲解与实现,与面试过程中如何回答这个问题
心跳检查是通过定期发送和接收小的探测消息来监控服务实例的健康状态。以下是其基本原理:
GeekLiHua
2025/01/21
1110
Eureka 服务上下线监控
微服务架构下,服务的数量少则几十,多则上百,对服务的监控必不可少。 如果是以前的单体项目,启动了几个项目是固定的,可以通过第三方的监控工具对其进行监控,然后实时告警。 在微服务下,服务数量太多,并且可以随时扩展,这个时候第三方的监控功能就不适用了,我们可以通过Spring Boot Admin连接注册中心来查看服务状态,这个只能在页面查看。 很多时候更希望能够自动监控,通过邮件告警,某某服务下线了这样的功能。在Spring Boot Admin中其实已经有这样的功能了,我们只需要配置一些邮件的信息就可以使用
猿天地
2018/04/03
1.9K0
服务注册与发现组件 Eureka 客户端实现原理解析
在前面的文章介绍了,如何使用服务注册发现组件:Eureka,并给出使用示例。本文在此基础上,将会讲解 Eureka 客户端实现的内幕,结合源码深入实现的细节,知其所以然。客户端需要重点关注以下几点:
aoho求索
2019/09/25
2.2K0
服务注册与发现组件 Eureka 客户端实现原理解析
Spring Cloud 之 Eureka.
 简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于 RPC 进行通信协作。 被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建, 并且每个服务都维护着自身的数据存储(划重点,每个微服务都有自己的数据库实例)、 业务开发、自动化测试案例以及独立部署机制。
JMCui
2019/06/28
4610
深入理解Spring的事件通知机制
Spring作为一个优秀的企业级应用开发框架,不仅提供了众多的功能模块和工具,还提供了一种灵活高效的事件通知机制,用于处理组件之间的松耦合通讯。本文将详细介绍Spring的事件通知机制的原理、使用方法以及示例,希望对大家深入理解Spring框架有所帮助。
xindoo
2023/03/19
6.2K0
Eureka可用性源码分析
在调用时通过断点可以知道具体的元数据。在实际使用过程中,我们可以针对配置的不同元数据采取不同的执行
zhaozhen
2021/07/15
3820
Eureka可用性源码分析
Spring Cloud Eureka 全解 (6) - 一些热门QA
实例初始化完毕时,会发送一个状态为UP的事件,触发这个Listener(状态从STARTING变成UP ):
干货满满张哈希
2021/04/12
3790
Spring Cloud Eureka 全解 (6) - 一些热门QA
SpringCloud源码:客户端分析(二)- 客户端源码分析
让我们继续关注 第一个自动装配类 EurekaClientAutoConfiguration 对CloudEurekaClient 的构造封装,即如下代码块:
后台技术汇
2024/10/03
2050
SpringCloud源码:客户端分析(二)- 客户端源码分析
【一起学源码-微服务】Nexflix Eureka 源码九:服务续约源码分析
上一讲 我们讲解了服务发现的相关逻辑,所谓服务发现 其实就是注册表抓取,服务实例默认每隔30s去注册中心抓取一下注册表增量数据,然后合并本地注册表数据,最后有个hash对比的操作。
一枝花算不算浪漫
2020/02/10
4270
eureka 原理_什么是swot分析方法
#总结 eureka内部实际上是分为三个实例的,分别是Client,Server和Instance, Eureka-Client启动,创建Instance实例,封装成对象,推送给server,server接收Instance对象,返回实例集合,并签订租约,client定时发动续租请求到server,server维护各个instance实例,服务之间调用不通过eureka。 #Eureka-Client client启动类实例顺序
全栈程序员站长
2022/09/27
7090
eureka 原理_什么是swot分析方法
领导让我研究 Eureka 源码 | 启动过程
最近在倒腾 Eureka 源码,大环境太卷了,必须得卷点源码才行,另外呢,能够读懂开源项目的源码、解决项目中遇到的问题是实力的象征,是吧?如果只是会用些中间件,那是不够的,和 CRUD 区别不大。
悟空聊架构
2022/05/13
3230
领导让我研究 Eureka 源码 | 启动过程
Eureka的InstanceInfoReplicator类(服务注册辅助工具)
以下图片来自Netflix官方,图中显示Eureka Client会向注册中心发起Get Registry请求来获取服务列表:
程序员欣宸
2019/05/26
1.1K0
聊聊spring cloud eureka的instanceEnabledOnit属性
本文主要研究下spring cloud eureka的instanceEnabledOnit属性
code4it
2018/09/17
7260
注册中心 Eureka 源码解析 —— 应用实例注册发现(六)之全量获取
本文主要分享 Eureka-Client 向 Eureka-Server 获取全量注册信息的过程。
芋道源码
2018/07/31
1.2K0
注册中心 Eureka 源码解析 —— 应用实例注册发现(六)之全量获取
深入理解Eureka之源码解析
方志朋
2017/12/29
1.3K0
深入理解Eureka之源码解析
Eureka 源码分析之 Eureka Server
上一篇文章《Eureka 源码分析之 Eureka Client》 通过源码知道 ,eureka Client 是通过 http rest来 与 eureka server 交互,实现 注册服务,续约服务,服务下线 等。本篇探究下eureka server。
程序员果果
2019/06/19
6390
eureka监听各服务状态,下线、重连等,并做相应的处理
在一些场景下,我们需要监听eureka服务中心的一些状态,譬如某个微服务挂掉了,我们希望能监听到,并给管理员发送邮件通知。
天涯泪小武
2019/01/17
3.4K0
Spring Cloud微服务技术栈(四):服务治理Spring Cloud Eureka部分源码分析
当我们搭建好Eureka Server服务注册中心并启动后,就可以继续启动服务提供者和服务消费者了。大家都知道,当服务提供者成功启动后,就会向服务注册中心注册自己的服务,服务消费者成功启动后,就会向服务注册中心获取服务实例列表,根据实例列表来调用具体服务。那么,这整个过程是如何运转的呢?我们一起来根据源码的思路来探索。
itlemon
2020/04/03
7120
Spring Cloud微服务技术栈(四):服务治理Spring Cloud Eureka部分源码分析
推荐阅读
相关推荐
Eureka的事件通知机制(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文