Springboot webscoket自定義定時器
問題描述
需要定時通過websocket接口來推送mysql里面最新的數(shù)據(jù),自定義了定時器
@Component
@Slf4j
public class TaskScheduler {
@Autowired
private TparkOrderInOutMapper tparkOrderInOutMapper;
@Autowired
UserController userController;
/**
* 間隔是10秒執(zhí)行一次
*/
@Scheduled(cron = "0/10 * * * * ?")
public void pushParkInfo() {
userController.findAll();
}
}定時器配置
在啟動類里面增加定時器的啟動入口。
@SpringBootApplication
@MapperScan(basePackages = "com.stop.mapper") //掃描mapper包
@EnableScheduling //配置定時器
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
System.out.println("hello world");
System.out.println("test");
}
}
其中,注解@EnableSchedu ling 就是配置定時器。
啟動作業(yè)
啟動作業(yè)發(fā)現(xiàn)定時器的任務沒有執(zhí)行。查閱資料是因為:
springBoot 默認是使用單線程的Scheduler來處理我們的 @Scheduled注解的定時任務。
我們需要定義一個TaskScheduler的配置類,使用多線程來執(zhí)行我們的定時任務。
@Configuration
public class ScheduledTaskConfiguration implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
final ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(2);
taskScheduler.initialize();
taskRegistrar.setTaskScheduler(taskScheduler);
}
}
最后運行application的時候,我們可以看到控制上:

我們可以看到上面定時任務按照間隔10秒在執(zhí)行操作。
到此這篇關于Springboot webscoket自定義定時器的文章就介紹到這了,更多相關Springboot定時器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IntelliJ?IDEA?2022.2最新版本激活教程(親測可用版)永久激活工具分享
Jetbrains官方發(fā)布了?IntelliJ?IDEA2022.2?正式版,每次大的版本更新,都會有較大的調整和優(yōu)化,除本次更新全面擁抱?Java?17?外,還有對IDE?UI界面,安全性,便捷性等都做了調整和優(yōu)化完善,用戶體驗提升不少,相信后面會有不少小伙伴跟著更新2022-08-08
spring scheduled單線程和多線程使用過程中的大坑
本文主要介紹了spring scheduled單線程和多線程使用過程中的大坑,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Java如何獲取@TableField,@TableName注解的值
這篇文章主要介紹了Java如何獲取@TableField,@TableName注解的值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01

