spring-boot - 在 Spring Boot 之外关闭服务
问题描述
我正在编写一些简单的微服务来了解 Netflix Eureka 的工作方式。
我想知道是否存在以编程方式关闭 Java 服务的一般可能性,结果是立即从 Eureka 服务注册中心注销。
我找到了 Spring Boot 执行器端点的解决方案(带有 POST 请求service-URL/actuator/shutdown
)。
如果我想关闭不基于 Spring Boot 的服务,如何达到相同的结果?
解决方案
以一种非常抽象的方式,每个无限期运行的进程,比如监听请求的服务器,基本上都是一个 while 循环
while flag:
listen and process request
shutdown
只是一个 api 影响它flag
并使程序从循环中存在并恢复直接流程,这将导致结束该程序
所以要关闭一个不是spring boot的服务,你需要创建一个可以像上面那样操作代码流的api
此外,spring boot
它是一个非常健壮且最小化的包装器,因此您可以将 Spring Boot 合并到 Java 中的几乎任何服务和程序中
请注意,Eureka
支持手动覆盖服务状态,因此您可以告诉 Eureka 忽略并取消注册一个或多个服务,而不管它们的实际状态如何
大多数发现服务在被动模式下工作(不主动发起与服务的联系),例如eureka
每个服务每 x 次发送一次健康检查,发现服务器只有在 x 时间过去并进行健康检查后才会知道服务处于脱机状态到期(还考虑了一些其他参数,例如阈值和特殊操作模式)
我向您推荐这篇文章以获取有关控制驱逐率的更多信息"spring-boot-eureka"
(尤其是最后一条评论)
推荐阅读
- javascript - 在单击元素及其所有先前的兄弟元素时添加一个类
- javascript - 使用闪亮的用户输入触发鼠标单击事件
- ios - 无回调的 dispatch_async 的 OCMock
- css - 如何在纯 CSS 中使用来自顺风的 @Apply?
- c# - 如何将单元格连续相乘,gridview
- javascript - 当屏幕尺寸大于 700 像素时,如何使用 javascript 只让我的标题菜单缩小?
- javascript - React.js 拖动事件在更改状态并引用新组件以及旧组件时导致内存泄漏
- javascript - 如何使用 javascript 进行表格计算和迭代?
- xml - 如果属性不存在,则获取节点值
- docker - 错误:无法运行程序“docker”(在目录“/var/jenkins_home/workspace/docker-springboot”中):错误=2,没有这样的文件或目录