收听尤里卡事件

Listening to Eureka events

提问人:raiyan 提问时间:10/3/2016 更新时间:6/16/2023 访问量:3480

问:

我有一个在本地机器上运行的 Eureka 服务器。Eureka 客户端已注册到此服务器。我能够查看 eureka 仪表板以查看已注册的实例。

我是否可以在服务器端设置一个事件侦听器,该侦听器将在注册或取消实例时触发?

我浏览了源代码,发现 eureka 从弹簧中调度了以下 3 个事件ApplicationContext

  1. EurekaInstanceRenewedEvent
  2. EurekaInstanceRegisteredEvent
  3. EurekaInstanceCancelledEvent

其中,只有工作和侦听器在服务器接收到心跳时被触发。当从 eureka 注册或取消新实例时,我无法侦听其他事件。EurekaInstanceRenewedEvent

任何帮助将不胜感激。

春季 活动 尤里卡 Spring-Cloud-Netflix

评论

0赞 spencergibb 10/4/2016
您使用的是什么版本?
0赞 raiyan 10/4/2016
我正在使用 spring cloud dependencies Camden.RC1 版本。它使用 spring-cloud-netflix-eureka-server v1.2.0.RC1 和 eureka core v1.4.11
0赞 spencergibb 10/4/2016
Camden.RELEASE是最新的,尽管我怀疑这会有太大变化。
0赞 raiyan 10/5/2016
@spencergibb我尝试了旧版本。我有同样的问题。调试了一下,发现了问题。我在spring-cloud git上创建了一个问题
0赞 bart.s 10/6/2016
我做了一些实验,结果(在我看来)org.springframework.cloud.netflix.eureka.server.InstanceRegistry中缺少一个register方法实现。InstanceRegistry 类扩展了 PeerAwareInstanceRegistryImpl,它具有 register(final InstanceInfo info, final boolean isReplication),该 register(final InstanceInfo info, final boolean isReplication) 未在 InstanceRegistry 中被覆盖,但由 com.netflix.eureka.resources.ApplicationResource 中的 addInstance 方法调用。我没有分析取消操作,但我认为问题可能是相似的。如果需要,我可以帮助修复它。

答:

0赞 Ranjan 6/16/2023 #1

您可以为 Eureka 服务器事件实现事件侦听器

  1. 创建事件侦听器类:创建一个实现 ApplicationListener 接口并指定要侦听的事件类型的类。例如,如果要侦听注册事件,可以< EurekaInstanceRegisteredEvent 实现 ApplicationListener>。

  2. 实现事件处理逻辑:重写侦听器类中的 onApplicationEvent 方法以处理事件。当指定事件发生时,将调用此方法。您可以从事件对象访问相关信息并执行任何所需的操作,例如日志记录、更新数据库或通知其他组件。