我的 Spring Boot 應用程式中有奇怪的調度程式行為。我運行 SB 2.6.7 和 java 17。我的代碼
@Configuration
@EnableScheduling
public class SchedulingConfigurerConfiguration implements SchedulingConfigurer {
@Value("${schedule.pool}")
private int DYNO_CORES;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
var taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(DYNO_CORES * 4);
taskScheduler.initialize();
taskRegistrar.setTaskScheduler(taskScheduler);
}
@Bean
SimpleAsyncTaskExecutor executor() {
var executor = new SimpleAsyncTaskExecutor("bg_tasks_");
executor.setConcurrencyLimit(UNBOUNDED_CONCURRENCY);//these jobs are mainly IO-bound, so let's not set a limit for now
return executor;
}
}
我的班級只有一項任務。
@Slf4j
@Service
public class NoPrimaryServiceTasks {
@Scheduled(fixedDelay = 1000, initialDelay = 1000 )
public void checkBacklogSize() {
log.info("logzzz");
}
}
它不起作用。但是當我粘貼context.getBean(NoPrimaryServiceTasks.class);main 方法時,一切正常。沒有這種解決方法如何解決它?
org.springframework.boot.autoconfigure.task.ScheduledBeanLazyInitializationExcludeFilter - 這個類也不起作用
uj5u.com熱心網友回復:
有人將此代碼添加到我們的代碼庫中:)
for ( String name : beanFactory.getBeanDefinitionNames() ) {
beanFactory.getBeanDefinition( name ).setLazyInit( true );
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/485759.html
