SpringCloud使用nacos注册微服务,undertow为web服务器时,微服务下线问题

这篇具有很好参考价值的文章主要介绍了SpringCloud使用nacos注册微服务,undertow为web服务器时,微服务下线问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

服务下线时抛出异常:

[SpringContextShutdownHook] ERROR c.a.cloud.nacos.discovery.NacosWatch 180 -> namingService unsubscribe failed, properties:NacosDiscoveryProperties{serverAddr='project-pattern:10001', username='', password='', endpoint='', namespace='syz', watchDelay=30000, logName='', service='work-file-simon', weight=1.0, clusterName='DEFAULT', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.0.196', networkInterface='', port=13132, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null, instanceEnabled=true, ephemeral=true, failureToleranceEnabled=false}, ipDeleteTimeout=null, failFast=true}
java.lang.IllegalStateException: UT015023: This Context has been already destroyed
	at io.undertow.servlet.spec.ServletContextImpl.getDeploymentInfo(ServletContextImpl.java:211)
	at io.undertow.servlet.spec.ServletContextImpl.getInitParameterNames(ServletContextImpl.java:449)
	at org.springframework.web.context.support.ServletContextPropertySource.getPropertyNames(ServletContextPropertySource.java:41)
	at com.alibaba.spring.util.PropertySourcesUtils.getPropertyNames(PropertySourcesUtils.java:130)
	at com.alibaba.spring.util.PropertySourcesUtils.getSubProperties(PropertySourcesUtils.java:103)
	at com.alibaba.spring.util.PropertySourcesUtils.getSubProperties(PropertySourcesUtils.java:57)
	at com.alibaba.cloud.nacos.NacosDiscoveryProperties.enrichNacosDiscoveryProperties(NacosDiscoveryProperties.java:657)
	at com.alibaba.cloud.nacos.NacosDiscoveryProperties.getNacosProperties(NacosDiscoveryProperties.java:651)
	at com.alibaba.cloud.nacos.discovery.NacosWatch.stop(NacosWatch.java:175)
	at com.alibaba.cloud.nacos.discovery.NacosWatch.stop(NacosWatch.java:107)
	at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:234)
	at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:54)
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:373)
	at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:206)
	at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:129)
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1067)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:172)
	at org.springframework.context.support.AbstractApplicationContext$1.run(AbstractApplicationContext.java:991)

出现错误原因:

        由于服务下线时触发关闭Hook,undertow在nacos之前先关闭了,导致naocs取不到undertow里面的对象,导致空指针异常

SpringCloud使用nacos注册微服务,undertow为web服务器时,微服务下线问题


处理方式:

        1、这里导致服务无法下线,故可以重写这个 naocs 的 Hook

        2、调整NacosWatch关闭顺序,在springcloudalibaba 2.2.8.RELEASE 已修复这个问题

        3、放任这个错误,添加一个补充nacos服务下线

                        例:监听 spring的ContextClosedEvent ,在方法里面调用NacosAutoServiceRegistration 的destroy()方法

SpringCloud使用nacos注册微服务,undertow为web服务器时,微服务下线问题

 

                        例:在服务里添加一个接口 调用NacosAutoServiceRegistration.stop()。在下线的方法或者是脚本里面调用这个接口(需在实际关闭之前调用)文章来源地址https://www.toymoban.com/news/detail-508798.html

 
 
                    

到了这里,关于SpringCloud使用nacos注册微服务,undertow为web服务器时,微服务下线问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud Nacos服务注册指定注册的ip和端口号

    如果说我们默认不配置注册指定ip和端口号那么会走我们的本地网卡 特殊服务部署可能需要制定注册的ip与端口号 配置文件加上 spring.cloud.nacos.discovery.ip = ip spring.cloud.nacos.discovery.port = 端口 就可以啦

    2024年02月11日
    浏览(43)
  • SpringCloud以及Nacos服务注册IP选择问题

    场景: 微服务部署后,需要相互调用,其中服务A调用服务B时发现无法调用。其中服务注册和发现以及配置中心使用Nacos 分析: 检查了多遍代码后,没有发现调用方式有问题,所以只能是网络问题。通过postman直接调用服务B,发现可以调通,但是使用服务A不行,于是检查服务

    2024年02月06日
    浏览(41)
  • 【SpringCloud】三、Nacos服务注册+配置管理+集群搭建

    官网:https://nacos.io/zh-cn/ 下载 解压 启动 启动成功 登录 在cloud-demo 父工程中添加 spring-cloud-alilbaba的管理依赖: 子模块下添加nacos的客户端依赖(此时user、order中的eureka可以注释掉了) 在order和user模块的application.yml文件中,注释eureka地址,添加nacos的地址 重启order服务,查看

    2024年02月06日
    浏览(56)
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍

    注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。 服务注册中心(简称注册中心)是微服务框架的一个重要组件,在微服务架构里主要

    2024年02月22日
    浏览(68)
  • SpringCloud源码学习笔记3——Nacos服务注册源码分析

    系列文章目录和关于我 实现服务治理、服务动态扩容,以及调用时能有负载均衡的效果。 如果我们将服务提供方的ip地址配置在服务消费方的配置文件中,当服务提供方实例上线下线,消费方都需要重启服务,导致二者耦合度过高。注册中心就是在二者之间加一层,实现解耦

    2023年04月08日
    浏览(44)
  • 【SpringCloud入门】-- Nacos快速入门之搭建服务与注册中心

    目录 前言:  1.Nacos的下载与安装 2. 去MySQL建立一个名为nacos的数据库 3.介绍配置文件,conf目录下的 application.properties 4.nacos启动 5. nacos作为注册中心的作用 6.建立一个项目,实现向命名空间注册 前言: 上文我们已经简单介绍了一下Nacos,现在我们一起来动手搭建一个Nacos的注

    2024年02月09日
    浏览(39)
  • 手写SpringCloud系列-一分钟理解微服务注册中心(Nacos)原理。

    手写SpringCLoud项目地址,求个star github:https://github.com/huangjianguo2000/spring-cloud-lightweight gitee:https://gitee.com/huangjianguo2000/spring-cloud-lightweigh 1. 总结服务注册中心 我们可以理解注册中心就是一个HashMap,服务注册上去,需要用的时候去拉取,通过服务名称可以找到对应服务的IP地址和

    2024年02月14日
    浏览(49)
  • springcloud使用nacos搭建注册中心

    nacos安装这里就不细说了,(Nacos下载以及搭建环境_你非柠檬为何心酸142的博客-CSDN博客) 大家也可以去网上安装好,这里主要讲搭建 ,我们需要手动启动nacos, 输入(.startup.cmd -m standalone),出现一下图标就代表ok  下面是我的pom.xml文件  首先是父工程所需要的依赖,需要注意的

    2024年02月08日
    浏览(57)
  • SpringCloud + Gateway(网关) + Nacos(注册中心+配置中心)+ Dubbo(内部服务调用)

    Apache Dubbo是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力 1、协议支持方面 Feign更加优雅简单。Feign是通过REST API实现的远程调用,基于Http传输协议,服务提供者需要对外暴露Http接口供消费者调用,服务粒度是http接口级的。通过短连接的方式进行通信,

    2024年02月06日
    浏览(226)
  • SpringCloud(17~21章):Alibaba入门简介、Nacos服务注册和配置中心、Sentinel实现熔断与限流、Seata处理分布式事务

    Spring Cloud Netflix项目进入维护模式 https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now 说明 Spring Cloud Netflix Projects Entering Maintenance Mode 什么是维护模式 将模块置于维护模式,意味着 Spring Cloud 团队将不会再向模块添加新功能。我们将修复 block 级别的 bug 以及安全问题,我

    2024年01月19日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包