软件编程
位置:首页>> 软件编程>> java编程>> Springboot webscoket自定义定时器

Springboot webscoket自定义定时器

作者:Bonyin  发布时间:2023-02-12 05:34:02 

标签:Springboot,webscoket,定时器

问题描述

需要定时通过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的时候,我们可以看到控制上:

Springboot webscoket自定义定时器

我们可以看到上面定时任务按照间隔10秒在执行操作。

来源:https://blog.csdn.net/tryll/article/details/128680512

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com