Eureka和Feign客户端阻止springboot关闭



我只是想开发一个基于spring-boot的应用程序。我所期望的是应用程序将执行一些任务,然后退出。它需要为一些数据调用远程rest API。所以我使用了Feign。我现在遇到的是应用程序不能自动停止。我打电话给DiscoveryManager.getInstance().shutdownComponent();,但其他服务仍然在那里,使应用程序卡住。


@SpringBootApplication
@EnableFeignClients
public class MyApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
DiscoveryManager.getInstance().shutdownComponent();
}
}
@Component
@FeignClient(value = "DATA-MGT")
interface RemoteService {
@GetMapping(value = "/info/{code}")
String getConfig(@PathVariable String code);
}

有人有这方面的经验吗?

感谢。

我正面临着同样的问题,我能够修复它只是添加下面的代码,我想要它停止执行。我猜他们可能不是正确的方法来解决它,但它工作。

System.exit(0);

编辑1:我注意到几分钟后,Java正常关闭。编辑2:我倾向于相信你正在寻找运行应用程序作为批处理,我是对的吗?因此,我在Spring文档中找到了一篇关于这方面的文章,请查看。 https://spring.io/guides/gs/batch-processing/

总之,要停止应用程序的执行,请使用下面的代码模型。
package com.example.batchprocessing;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BatchProcessingApplication {
public static void main(String[] args) throws Exception {
System.exit(SpringApplication.exit(SpringApplication.run(BatchProcessingApplication.class, args)));
}
}

最新更新