springboot定时任务:同时使用定时任务和websocket报错

这篇具有很好参考价值的文章主要介绍了springboot定时任务:同时使用定时任务和websocket报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

项目使用了websocket,实现了消息的实时推送。后来项目需要一个定时任务,使用org.springframework.scheduling.annotation的@EnableScheduling注解来实现,启动项目之后报错

Bean 'com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration' of type [com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
Destroy method 'close' on bean with name 'nacosServiceRegistry' threw an exception: java.lang.NullPointerException

打断点进入代码发现是这个定时任务的bean为null

学习

由于先写的websocket推送消息,运行正常。之前一个项目只有一个定时任务(没有websocket)也是运行正常。综合网友的分析winky_L,是因为同时使用定时任务和websocket冲突导致

其他的一些学习kzcming
菜菜菜鸡

解决

1在启动类Application中加入task的initialize。【注意:如果继续报错,报错信息如下。报错信息解读:发现两个定时任务的bean,不知道使用哪一个,springboot报错,这时候在 taskScheduler方法中加上@Primary注解,告诉springboot使用这个自定义的定时任务】


Method nacosWatch in com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration required a single bean, but 2 were found:
	- taskScheduler: defined by method 'taskScheduler' in class path resource []
	- defaultSockJsTaskScheduler: defined by method 'defaultSockJsTaskScheduler' in class path resource [org/springframework/web/socket/config/annotation/DelegatingWebSocketConfiguration.class]

springboot定时任务:同时使用定时任务和websocket报错,java-解决问题,java,spring微服务,spring boot,websocket,后端
具体代码【】

    @Primary
    @Bean
    public TaskScheduler taskScheduler(){
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        //只有池子里的任务有执行结束后,池子之外的任务才有机会被加入执行。
        // 更糟的情况是,当池子里的任务都在因为异常或业务要求(比如出错无限重试)而导致池子永远无法得到释放,将导致固定值之外的任务永远不会被执行!
        //taskScheduler.setPoolSize允许动态设置池子的大小,可动态设置-> todo 有隐患
        taskScheduler.setPoolSize(10);
        taskScheduler.initialize();
        return taskScheduler;
    }

求解

问题1
刚开始在config类中添加该TaskScheduler 仍然启动不了,然后我放在启动类Application中就能启动成果。不知道这其中的原由
springboot定时任务:同时使用定时任务和websocket报错,java-解决问题,java,spring微服务,spring boot,websocket,后端
问题2
代码中和的这个线程池初始定义了poolsize,但是这里有隐患。
只有池子里的任务有执行结束后,池子之外的任务才有机会被加入执行。
更糟的情况是,当池子里的任务都在因为异常或业务要求(比如出错无限重试)而导致池子永远无法得到释放,将导致固定值之外的任务永远不会被执行!taskScheduler.setPoolSize允许动态设置池子的大小,可动态设置。看了一篇文章,但是还没有头绪daydayup文章来源地址https://www.toymoban.com/news/detail-672509.html

taskScheduler.setPoolSize(10);
        taskScheduler.initialize();

到了这里,关于springboot定时任务:同时使用定时任务和websocket报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端订阅后端推送WebSocket定时任务

            后端定时向前端看板推送数据,每10秒或者30秒推送一次。         HTTP协议是一个应用层协议,它的特点是无状态、无连接和单向的。在HTTP协议中,客户端发起请求,服务器则对请求进行响应。这种请求-响应的模式意味着服务器无法主动向客户端发送消息。   

    2024年04月25日
    浏览(41)
  • 苍穹外卖项目解读(四) 微信小程序支付、定时任务、WebSocket

    HM新出springboot入门项目《苍穹外卖》,笔者打算写一个系列学习笔记,“苍穹外卖项目解读”,内容主要从HM课程,自己实践,以及踩坑填坑出发,以技术,经验为主,记录学习,也希望能给在学想学的小伙伴一个参考。 注:本文章是直接拿到项目的最终代码,然后从代码出发

    2024年02月07日
    浏览(36)
  • java中定时任务 schedule 分布式下没有锁住 时间不同步 执行滞后 相对时间 系统时间 spring springboot

    java.util.Timer计时器可以进行:管理任务延迟执行(“如1000ms后执行任务”),及周期性执行(“如每500ms执行一次该任务”)。 但是,Timer存在一些缺陷,应考虑使用ScheduledThreadPoolExecutor代替,Timer对调度的支持是基于绝对时间,而不是相对时间的,由此任务对系统时钟的改变是敏感

    2024年02月10日
    浏览(47)
  • Spring Task 实现定时任务 以及 WebSocket 实现 订单提醒 (学习笔记)

    1.maven坐标 spring-context 2.启动类添加注解 @EnableScheduling 开启任务调度 3.自定义定时任务类 去设置网站设置要 进行得定时任务 cron表达式在线生成器:https://cron.qqe2.com/ 1.导入maven坐标 2.导入websocket组件 3.设置配置类 4.导入代码 前端测试代码

    2024年02月20日
    浏览(40)
  • springboot 与异步任务,定时任务,邮件任务

    在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完美解决这个问题。 SpringBoot 实现比较简单 主启

    2024年02月10日
    浏览(40)
  • 【springboot】springboot定时任务:

    一、文档: 【cron表达式在线生成器】https://cron.qqe2.com/ 二、案例:

    2024年02月11日
    浏览(47)
  • SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦)

    目录   前言 技术栈 功能展示 一、springboot项目添加netty依赖 二、netty服务端 三、netty客户端 四、测试 五、代码仓库地址   专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程

    2024年02月12日
    浏览(48)
  • SpringBoot整合Websocket(Java websocket怎么使用)

    WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立 实时、双向的数据通信 。可以用于在线聊天、在线游戏、实时数据展示等场景。与传统的 HTTP 协议不同,WebSocket 可以保持 长连接 ,实时传输数据,避免了频繁的 HTTP 请求和响应,节省了网络带

    2024年02月10日
    浏览(40)
  • [SpringBoot系列] 定时任务

    假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在Application中设置启用定时任务功能@EnableScheduling 启动定时任务 其中 @EnableScheduling 注解的作用是发现注解@Scheduled的任务并后台执行。 定时任务具体实现类 接下来我们来创建一个定时任务 运行Spring Boot,输出结果为如

    2023年04月20日
    浏览(74)
  • springBoot 定时任务设计

    【定时任务】Spring Boot 定时执行任务详解,每天定时几点钟执行任务_spingboot 定时在时间尾数是0或者5的时候执行_紫陌520的博客-CSDN博客 Springboot开启定时任务,cron表达式的写法_cron 22点_暖风ii的博客-CSDN博客

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包