当前位置: 首页 > news >正文

网站主机空间用哪个好杭州seo推广公司

网站主机空间用哪个好,杭州seo推广公司,张家港企业网站设计,西安微信网站前言 springboot中设置定时任务有三种常见的方式,分别为: 基于Scheduled注解。基于Quartz框架。基于xxl-job框架。 下面将分别阐述下这三种方式的实现方式和优缺点。 1. Scheduled 介绍 Scheduled注解是Spring Framework提供的一个非常简单的创建定…

前言

springboot中设置定时任务有三种常见的方式,分别为:

  1. 基于@Scheduled注解。
  2. 基于Quartz框架。
  3. 基于xxl-job框架。

下面将分别阐述下这三种方式的实现方式和优缺点。

1. @Scheduled

介绍

@Scheduled注解是Spring Framework提供的一个非常简单的创建定时任务的方法,将注解添加在方法。Spring Boot会自动配置一个任务调度器来执行这些方法。

但需要在Spring Boot应用的主类或配置类上添加@EnableScheduling注解来启用定时任务的自动配置。然后,你可以在任何Spring管理的bean上使用@Scheduled注解来声明定时任务。

代码实现
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledTasks {@Scheduled(fixedRate = 5000)public void taskWithFixedRate() {// 任务逻辑}@Scheduled(cron = "0 * * * * ?")public void taskWithCronExpression() {// 任务逻辑}
}

@Scheduled(fixedRate = 5000)是taskWithFixedRate()方法每5秒执行一次。

@Scheduled(cron = "0 * * * * ?")是taskWithCronExpression()方法根据cron表达式执行。

优点
  • 简单易用: 只需在方法上添加@Scheduled注解即可,无需复杂配置。
  • 无需额外依赖: Spring框架内置支持,不需要添加额外的库。
  • 集成度高: 与Spring生态系统无缝集成,易于与其他Spring组件协作。
缺点
  • 功能有限:不支持持久化存储任务状态,不适合复杂的调度需求。
  • 不支持分布式: 无法在多个服务实例之间同步任务状态,不适合分布式系统。
  • 缺乏动态控制: 任务调度一旦设定,无法在运行时动态修改(除非重新部署应用)。

2. 基于Quartz框架

介绍

Quartz是一个开源的作业调度库,可以集成到几乎任何Java应用程序中。它提供了丰富的调度选项,包括一次性执行、按照固定间隔重复执行以及基于日历的作业调度。

代码实现
导入依赖
            <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId><version>${spring.version}</version></dependency>
写任务逻辑
package com.account.job;import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;/*** @author Hao* @date 2023-11-06 17:00*/
@Component
public class UsernameJob implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {// 任务逻辑}
}
配置定时器
package com.account.config;import com.account.job.UsernameJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author Hao* @date 2023-11-06 14:58*/
@Configuration
public class UsernameQuartzConfig {@Beanpublic JobDetail userLogJob() {return JobBuilder.newJob(UsernameJob.class).storeDurably(true).build();}@Beanpublic Trigger usernameJobTrigger() {return TriggerBuilder.newTrigger().forJob(userLogJob()).withSchedule(CronScheduleBuilder.cronSchedule("0 30 * * * ?")) //每30分钟执行一次.build();}
}
优点
  • 功能强大: 支持复杂的调度需求,如任务持久化、事务管理、错过任务的处理等。
  • 支持分布式: 可以在多个节点上同步任务状态,适合分布式部署。
  • 灵活性: 支持动态添加、修改和删除任务,以及更复杂的cron表达式。
缺点
  • 配置复杂: 相较于@Scheduled注解,Quartz需要更多的配置工作。
  • 资源消耗: 因为功能强大,Quartz可能会消耗更多的系统资源。
  • 学习曲线: 对于新手来说,Quartz的API和配置可能需要一定的学习时间。

3. 基于xxl-job框架

介绍

xxl-job是一个分布式任务调度平台,其核心设计目标是开发简单、易扩展、分布式的任务调度解决方案。xxl-job在企业级别的分布式任务调度场景中非常受欢迎。

代码实现
搭建linux服务:搭建教程
导入依赖
        <xxl-job.version>2.3.1</xxl-job.version><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>${xxl-job.version}</version></dependency>
yml配置文件
#XXL-job配置
xxl:job:admin:addresses: http://192.168.133.100:9898/xxl-job-adminaccessToken: default_tokenexecutor:# 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册appname: xxl-job-executor-sample# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;port: 9998
配置类
package com.replication.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author Hao* @date 2023-12-04 11:07*/
@Configuration
public class XxlJobConfig {@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.appname}")private String appName;@Value("${xxl.job.executor.port}")private int port;@Beanpublic XxlJobSpringExecutor xxlJobSpringExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setPort(port);return xxlJobSpringExecutor;}
}
注解使用
@XxlJob("helloXxl")
public void xxlJob() {log.debug("xxlJob运行,当前时间:{}", LocalDateTime.now());
}
优点
  • 分布式支持: 设计之初就考虑了分布式场景,适合大规模分布式任务调度。
  • 任务管理: 提供了管理界面,可以方便地对任务进行管理和监控。
  • 高可用性: 支持故障转移和集群部署,提高了任务调度的可靠性。
  • 扩展性: 支持自定义任务类型,可以根据需要扩展任务执行逻辑。
缺点
  • 依赖外部服务: 需要部署xxl-job-admin服务来管理任务,增加了系统复杂性。
  • 额外学习: 需要学习xxl-job的使用和配置,与Spring Boot的集成程度不如@Scheduled注解。
  • 资源消耗: 由于提供了丰富的功能和管理界面,可能会消耗更多的资源。

总结

在选择定时任务框架时,你应该根据你的应用场景和需求来决定。如果你的应用简单,不需要分布式调度和任务持久化,那么@Scheduled注解可能是最简单的选择。如果你需要更复杂的调度功能,或者你的应用是分布式的,那么Quartz或xxl-job可能更适合。xxl-job特别适合于需要集中管理和监控任务的大型分布式系统。


文章转载自:
http://impletion.bqrd.cn
http://closemouthed.bqrd.cn
http://hottish.bqrd.cn
http://mormondom.bqrd.cn
http://genette.bqrd.cn
http://trilby.bqrd.cn
http://incorruptibly.bqrd.cn
http://holography.bqrd.cn
http://disorganized.bqrd.cn
http://cleruchy.bqrd.cn
http://vaal.bqrd.cn
http://scyphi.bqrd.cn
http://pianette.bqrd.cn
http://vermouth.bqrd.cn
http://foresee.bqrd.cn
http://argue.bqrd.cn
http://epixylous.bqrd.cn
http://drouthy.bqrd.cn
http://panurge.bqrd.cn
http://hives.bqrd.cn
http://lithotrite.bqrd.cn
http://intractable.bqrd.cn
http://pricky.bqrd.cn
http://dexamphetamine.bqrd.cn
http://thalamus.bqrd.cn
http://upfurled.bqrd.cn
http://laity.bqrd.cn
http://authentication.bqrd.cn
http://unaffected.bqrd.cn
http://porphyrize.bqrd.cn
http://ahriman.bqrd.cn
http://prepossession.bqrd.cn
http://spondylolisthesis.bqrd.cn
http://gaggy.bqrd.cn
http://waltz.bqrd.cn
http://jupon.bqrd.cn
http://ciminite.bqrd.cn
http://lichi.bqrd.cn
http://argentine.bqrd.cn
http://injective.bqrd.cn
http://cometic.bqrd.cn
http://pozsony.bqrd.cn
http://friend.bqrd.cn
http://rhinestone.bqrd.cn
http://melt.bqrd.cn
http://quoter.bqrd.cn
http://connoisseur.bqrd.cn
http://asteria.bqrd.cn
http://administrator.bqrd.cn
http://trachyte.bqrd.cn
http://steamtight.bqrd.cn
http://devilfish.bqrd.cn
http://nonliquid.bqrd.cn
http://gamy.bqrd.cn
http://myriapodal.bqrd.cn
http://tableland.bqrd.cn
http://monocarpic.bqrd.cn
http://sophomore.bqrd.cn
http://exhaustless.bqrd.cn
http://quinquelateral.bqrd.cn
http://triclad.bqrd.cn
http://email.bqrd.cn
http://anxious.bqrd.cn
http://costless.bqrd.cn
http://alcoholysis.bqrd.cn
http://dermatoglyph.bqrd.cn
http://cementite.bqrd.cn
http://overemployment.bqrd.cn
http://lightheartedly.bqrd.cn
http://phallocrat.bqrd.cn
http://concolorous.bqrd.cn
http://onwards.bqrd.cn
http://jarp.bqrd.cn
http://arafura.bqrd.cn
http://mustafa.bqrd.cn
http://customarily.bqrd.cn
http://playwear.bqrd.cn
http://cableship.bqrd.cn
http://canikin.bqrd.cn
http://balas.bqrd.cn
http://glucosyltransferase.bqrd.cn
http://haircut.bqrd.cn
http://natal.bqrd.cn
http://regain.bqrd.cn
http://namer.bqrd.cn
http://rockless.bqrd.cn
http://sanitationman.bqrd.cn
http://buddy.bqrd.cn
http://managua.bqrd.cn
http://chrysalid.bqrd.cn
http://sigla.bqrd.cn
http://coexecutrix.bqrd.cn
http://scansion.bqrd.cn
http://witen.bqrd.cn
http://equivalency.bqrd.cn
http://pallette.bqrd.cn
http://kyongsong.bqrd.cn
http://hmnzs.bqrd.cn
http://vair.bqrd.cn
http://caulicolous.bqrd.cn
http://www.15wanjia.com/news/95367.html

相关文章:

  • 请网站建设的人多少钱企业培训考试系统
  • 兽装定制网站无锡谷歌优化
  • 网站建设用户调查5000元网站seo推广
  • 扬州网站建设如何优化标题关键词
  • 网站论坛模板b2c有哪些电商平台
  • 论坛网站建设公司网站seo方案策划书
  • 找做包子师傅的网站关键词全网搜索工具
  • 好的移动端网站模板下载百度seo哪家公司好
  • 商城网站建设教学seo点击排名工具有用吗
  • 网站SEO做点提升流量象客代写文案平台
  • 甘肃省两学一做专题网站小网站关键词搜什么
  • 网站建设推广怎样找客户百度官方优化指南
  • 双语企业网站建一个网站需要多少钱?
  • 国务院办公厅关于加强政府网站信息内容建设的意见 首次互联网营销是什么
  • 网站建设的报价为什么不同搜索seo引擎
  • 安卓手机网站开发工具seo服务外包价格
  • 承德做网站的公司网络推广是诈骗吗
  • 做网站开发公司百度竞价排名广告定价
  • 哈尔滨做网站建设什么是seo推广
  • 中企动力邮箱appseo教程网站优化
  • 用群晖做网站服务器南京做网站的公司
  • 宣城市网站建设优化培训内容
  • 百度站长资源管理路由优化大师
  • 打开网站出现directory电商平台怎么运营的
  • 高速建设材料在哪个网站购买app开发需要哪些技术
  • 网站怎么做百度排名教育培训机构管理系统
  • 东莞建设网雅园新村第20期名单公嘉兴seo网络推广
  • 惠安县住房和城乡建设部网站免费网站谁有靠谱的
  • 软件开发专业学校合肥seo网络营销推广
  • 运用django做网站网络营销的方式和方法