WebSocketConfigurationSupport$NoOpScheduler.schedule

項目中使用了WebSocket進行消息的推送,同時又使用了定時器Scheduled進行定時執行操作,這兩者同時使用拋出異常。

java.lang.IllegalStateException: Unexpected use of scheduler.
    at org.springframework.web.socket.config.annotation.WebSocketConfigurationSupport$NoOpScheduler.schedule(WebSocketConfigurationSupport.java:108)

查看WebSocketConfigurationSupport的108行,可以看到

private static class NoOpScheduler implements TaskScheduler {

		@Override
		@Nullable
		public ScheduledFuture<?> schedule(Runnable task, Trigger trigger) {
			throw new IllegalStateException("Unexpected use of scheduler.");
		}

這裏定義了一個schedule方法,方法中執行拋出了一個異常,該方法對於所有的@Schedule都會執行,所以會拋出異常。
解決:
通過顯示手動創建ThreadPoolTaskScheduler,在Config中增加方法:

 @Bean
    public ThreadPoolTaskScheduler taskScheduler(){
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(10);
        taskScheduler.initialize();
        return taskScheduler;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章