您現在的位置是:網站首頁>PythonSpringboot webscoket自定義定時器

Springboot webscoket自定義定時器

宸宸2024-02-01Python66人已圍觀

給網友朋友們帶來一篇相關的編程文章,網友古鴻振根據主題投稿了本篇教程內容,涉及到Springboot定時器、Springboot webscoket定時器、Springboot定時器相關內容,已被668網友關注,如果對知識點想更進一步了解可以在下方電子資料中獲取。

Springboot定時器

問題描述

需要定時通過websocket接口來推送mysql裡麪最新的數據,自定義了定時器

@Component
@Slf4j
public class  TaskScheduler {
    @Autowired
    private TparkOrderInOutMapper tparkOrderInOutMapper;
    @Autowired
    UserController userController;
    /**
     * 間隔是10秒執行一次
     */
    @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 就是配置定時器。

啓動作業

啓動作業發現定時器的任務沒有執行。查閲資料是因爲:

springBoot 默認是使用單線程的Scheduler來処理我們的 @Scheduled注解的定時任務。

我們需要定義一個TaskScheduler的配置類,使用多線程來執行我們的定時任務。

@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秒在執行操作。

到此這篇關於Springboot webscoket自定義定時器的文章就介紹到這了,更多相關Springboot定時器內容請搜索碼辳之家以前的文章或繼續瀏覽下麪的相關文章希望大家以後多多支持碼辳之家!

我的名片

網名:星辰

職業:程式師

現居:河北省-衡水市

Email:[email protected]