我们的微服务遇到了类似的问题,为了预热,我们添加了一个组件
ApplicationStartup implements ApplicationListener<ApplicationReadyEvent>
在应用程序启动后立即调用应用程序,这对我们有用。使用此解决方案,可以保证在有效负载中使用的所有类都将在您启动的每个实例的实例启动后立即加载,并且您不需要外部脚本即可进行调用 。外部脚本也有问题,我们不能肯定地说,调用由新实例处理。
@Component
public class ApplicationStartup implements ApplicationListener<ApplicationReadyEvent> {
@Autowired
YourService yourService;
@Override
public void onApplicationEvent(final ApplicationReadyEvent event) {
System.out.println("ApplicationReadyEvent: application is up");
try {
// some code to call yourservice with property driven or constant inputs
} catch (Exception e) {
e.printStackTrace();
}
}
}