# 《API网关》第18章:容器关闭监听和异常管理

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

# 一、学习指引

有些代码你根本不愿意接下来?

当你有一天有更强的能力驾驭出合理的架构和编写出高质量的代码以后,其实你会特别厌烦去接手那些随意编写出来的代码。因为这样的代码有太多的开发问题,包括;可读性差、维护性弱、迭代成本高,要说这不是可以重构吗?但其实这一片片像贴膏药一样的代码,根本不具有重构的价值,只能铲了重写。

但可能有一天连这样的膏药代码都不用你编写了,以后越来越多的类似这样的基础工作会被机器和AI取代,研发要做的是有思想高度的设计和复杂逻辑的落地。对于个人来说如果总是重复自己的编写一些 if...else 可能没到35岁就被一些智能化的编码工具取代了。所以,尽可能的做一些让自己能积累到知识和经验的编程工作。

# 二、动作监听

按照网关设计的架构图 (opens new window),api-gateway-assist 助手工程会被引入到 api-gateway-engine 网关引擎中启动。那么在 api-gateway-assist 启动的过程中,我们希望它所发生的一些动作,包括启动中的异常、拉取接口信息的失败以及容器关闭后优雅的处理网关通信的关闭。那么这些内容,就是本章需要完成的事情。

  • 结合于 api-gateway-assist-03 的工程内容,这里需要把网关的注册和拉取配置操作,放到 ApplicationContextAware 接口对应的 setApplicationContext 方法中。这样可以在注册服务以及拉取配置的过程中出现失败情况时,则直接抛异常关闭容器。
  • 另外这里还需要做一个容器关闭的监听动作 ApplicationListener<ContextClosedEvent> 容器关闭时则把网关中的通信模块下的 Netty 服务也一起关闭掉。