CN107277171A - 一种基于quartz的可定制消息发送方法 - Google Patents
一种基于quartz的可定制消息发送方法 Download PDFInfo
- Publication number
- CN107277171A CN107277171A CN201710629863.9A CN201710629863A CN107277171A CN 107277171 A CN107277171 A CN 107277171A CN 201710629863 A CN201710629863 A CN 201710629863A CN 107277171 A CN107277171 A CN 107277171A
- Authority
- CN
- China
- Prior art keywords
- message
- quartz
- time
- server
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明特别涉及一种基于quartz的可定制消息发送方法。该基于quartz的可定制消息发送方法,能够灵活定制消息模板、自主设定发送时间,实现了消息的自动批量生成和定时准点发送,解决了消息内容局限、消息业务覆盖面较狭窄、消息发送的频率单一以及消息定点推送、个性定制困难的难题,增强了消息发送的灵活性。
Description
技术领域
本发明涉及计算机软件技术领域,特别涉及一种基于quartz的可定制消息发送方法。
背景技术
伴随着互联网时代的到来,网络技术的应用也是空前广泛。利用网络推送消息,发送通知公告或者提醒消息也越来越广泛。
目前较为常见的消息推送机制有:固定消息单次发送、固定消息定时发送、消息被触发发送(验证码等)。
quartz是一个完全由java编写的开源作业调度框架,是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或EJBs。
基于此,本发明提出了一种基于quartz的可定制消息发送方法,实现了消息模板可定制,消息发送时间可设定修改的功能。
quartz框架的核心是调度器。调度器负责管理quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。quartz不仅仅是线程和线程管理。为确保可伸缩性,quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业,这就是quartz能并发运行多个作业的原理。quartz依赖一套松耦合的线程池管理部件来管理线程环境。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于quartz的可定制消息发送方法。
本发明是通过如下技术方案实现的:
一种基于quartz的可定制消息发送方法,其特征在于,包括以下步骤:
(1)设定消息模板,输入消息模板名称,设置消息生成时间,发送频率和发送时间,
(2)设置消息接收人,一条消息模板可以被多人定制,同时一个人可以定制多条消息模板;
(3)quartz执行调度,创建一个实现org.quartz.Job接口的java类;
(4)quartz支持集群部署,创建并设定配置quartz.propeties文件;
(5)调度器调度消息生成的模块,根据消息模板和消息订阅情况自动批量生成消息;
(6)将生成的消息存放到待发区;
(7)调度器调度消息发送的模块,即调度消息发送定时器,将消息发送至各个渠道。
所述步骤(1)中,消息模板名称可以作为消息标题显示;消息模板可以为纯文字,也可以在消息生成过程中根据规则动态添加相应的指标参数;消息模板的有效期表示根据消息模板生成消息的有效起止时间,超过或者早于当前时间,消息将不生成;消息的发送频率可以设置日度、月度或年度,即每日发送、每月发送、每年发送;消息的发送时间即每天发送消息的时刻。
所述步骤(2)中,根据不同的模板生成不同的消息,根据消息接收人的权限范围,依据消息模板生成的消息中的数据会略有不同。
所述步骤(4)中,quartz.propeties文件中配置集群中各服务器的ID和quartz调度器ID,quartz线程池的实现类,quartz线程池中线程数,quartz线程优先级,实现集群时任务的存储实现方式,quartz存储任务相关数据的表的前缀,连接数据库数据源名称,是否启用集群,连接数据库的实现类,连接数据库链接,连接数据库用户名,连接数据库密码和最大数据库连接数。
所述各服务器的ID自动生成,无需修改;由于配置集群时,只有一个quartz调度器,集群中每个服务器的quartz调度器ID值都相同;
所述quartz线程池中线程数根据任务量和负责程度来调整;
所述quartz线程优先级为:当任务到达执行时间,且线程池中没有可用线程时,若任务等待的时间超过配置的最大值,则本次任务不执行,等待下一次执行时间的到来;
启用集群后,集群中的服务器相互检测间隔,各服务器按照配置的时间间隔往服务器中更新状态;当服务器超过配置时间没有更新状态时,调度器认为该服务器已经down掉,不再分配任务给该服务器;
所述连接数据库的实现类与连接数据库链接的配置参照IAM数据库配置文件中的配置。
本发明的有益效果是:该基于quartz的可定制消息发送方法,能够灵活定制消息模板、自主设定发送时间,实现了消息的自动批量生成和定时准点发送,解决了消息内容局限、消息业务覆盖面较狭窄、消息发送的频率单一以及消息定点推送、个性定制困难的难题,增强了消息发送的灵活性。
附图说明
附图1为本发明基于quartz的可定制消息发送方法流程示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图和实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
该基于quartz的可定制消息发送方法,包括以下步骤:
(1)设定消息模板,输入消息模板名称,设置消息生成时间,发送频率和发送时间,
(2)设置消息接收人,一条消息模板可以被多人定制,同时一个人可以定制多条消息模板;
(3)quartz执行调度,创建一个实现org.quartz.Job接口的java类;
(4)quartz支持集群部署,创建并设定配置quartz.propeties文件;
(5)调度器调度消息生成的模块,根据消息模板和消息订阅情况自动批量生成消息;
(6)将生成的消息存放到待发区;
(7)调度器调度消息发送的模块,即调度消息发送定时器,将消息发送至各个渠道。
所述步骤(1)中,消息模板名称可以作为消息标题显示;消息模板可以为纯文字,也可以在消息生成过程中根据规则动态添加相应的指标参数;消息模板的有效期表示根据消息模板生成消息的有效起止时间,超过或者早于当前时间,消息将不生成;消息的发送频率可以设置日度、月度或年度,即每日发送、每月发送、每年发送;消息的发送时间即每天发送消息的时刻。
所述步骤(2)中,根据不同的模板生成不同的消息,根据消息接收人的权限范围,依据消息模板生成的消息中的数据会略有不同。
所述步骤(3)中,Quartz执行调度,启动定时器。
创建一个实现org.quartz.Job接口的java类:
/**
* @Description: 任务执行类
*
* @ClassName: QuartzJob
*/
public class QuartzJob implements Job {
@Override
public void execute(JobExecutionContext context) throwsJobExecutionException {
Map<String,String> paraMap = new HashMap<String, String>();
Date curDate = new Date(System.currentTimeMillis());
String taskName = (String) context.getMergedJobDataMap().get("taskName");
Map<String,String> operation = (Map<String,String>)context.getMergedJobDataMap().get("operation");
String className = "";
String methodName = "";
String xxmbId = "";
if(!CommonUtility.isEmpty(operation)){
className = operation.get("className");
methodName = operation.get("methodName");
xxmbId = operation.get("xxmbId");
}
paraMap.put("taskName",taskName);
try {
Class cls = Class.forName(className);
Method method = cls.getDeclaredMethod(methodName,new Class[]{String.class,String.class});
String result = (String) method.invoke(cls.newInstance(),xxmbId,null);
} catch (Exception e) {
e.printStackTrace();
QuartzManager.removeJob(taskName);
}
}
所述步骤(4)中,quartz.propeties文件中配置集群中各服务器的ID和quartz调度器ID,quartz线程池的实现类,quartz线程池中线程数,quartz线程优先级,实现集群时任务的存储实现方式,quartz存储任务相关数据的表的前缀,连接数据库数据源名称,是否启用集群,连接数据库的实现类,连接数据库链接,连接数据库用户名,连接数据库密码和最大数据库连接数。
quartz.propeties文件配置样例如下:
#由于配置集群时,只有一个quartz调度器,集群中每个服务器的quartz调度器ID值都相同
org.quartz.scheduler.instanceName = Scheduler1
#集群中每台服务器自己的ID自动生成,无需修改
org.quartz.scheduler.instanceId = AUTO
#Configure ThreadPool
#quartz线程池的实现类,无需修改
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
#SimpleThreadPool
#quartz线程池中线程数,可以根据任务数量和负责度来调整
org.quartz.threadPool.threadCount = 5
#quartz线程优先级
org.quartz.threadPool.threadPriority = 5
#Configure JobStore
#表示如果某个任务到达执行时间,而此时线程池中没有可用线程时,任务等待的最大时间,如果等待时间超过下面配置的值(毫秒),
#本次就不在执行,而等待下一次执行时间的到来,可以根据任务量和负责程度来调整
org.quartz.jobStore.misfireThreshold = 600000
#实现集群时,任务的存储实现方式,org.quartz.impl.jdbcjobstore.JobStoreTX表示数据库存储,无需修改
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#quartz存储任务相关数据的表的前缀,无需修改
org.quartz.jobStore.tablePrefix = QRTZ_
#连接数据库数据源名称,与下面配置中org.quartz.dataSource.myDS的myDS一致即可,可以无需修改
org.quartz.jobStore.dataSource = myDS
#是否启用集群,启用,改为true,注意:启用集群后,必须配置下面的数据源,否则quartz调度器会初始化失败
org.quartz.jobStore.isClustered = false
#集群中服务器相互检测间隔,每台服务器都会按照下面配置的时间间隔往服务器中更新自己的状态,
#如果某台服务器超过以下时间没有check in,调度器就会认为该台服务器已经down掉,不会再分配任务给该台服务器
org.quartz.jobStore.clusterCheckinInterval = 20000
#Non-Managed Configure Datasource
#配置连接数据库的实现类,可以参照IAM数据库配置文件中的配置
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
#配置连接数据库连接,可以参照IAM数据库配置文件中的配置
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@ip:port:ora
#配置连接数据库用户名
org.quartz.dataSource.myDS.user = ****
#配置连接数据库密码
org.quartz.dataSource.myDS.password = *****
# 最大数据库连接数
org.quartz.dataSource.myDS.maxConnections = 10
Claims (5)
1.一种基于quartz的可定制消息发送方法,其特征在于,包括以下步骤:
(1)设定消息模板,输入消息模板名称,设置消息生成时间,发送频率和发送时间,
(2)设置消息接收人,一条消息模板可以被多人定制,同时一个人可以定制多条消息模板;
(3)quartz执行调度,创建一个实现org.quartz.Job接口的java类;
(4)quartz支持集群部署,创建并设定配置quartz.propeties文件;
(5)调度器调度消息生成的模块,根据消息模板和消息订阅情况自动批量生成消息;
(6)将生成的消息存放到待发区;
(7)调度器调度消息发送的模块,即调度消息发送定时器,将消息发送至各个渠道。
2.根据权利要求1所述的基于quartz的可定制消息发送方法,其特征在于:所述步骤(1)中,消息模板名称可以作为消息标题显示;消息模板可以为纯文字,也可以在消息生成过程中根据规则动态添加相应的指标参数;消息模板的有效期表示根据消息模板生成消息的有效起止时间,超过或者早于当前时间,消息将不生成;消息的发送频率可以设置日度、月度或年度,即每日发送、每月发送、每年发送;消息的发送时间即每天发送消息的时刻。
3.根据权利要求1所述的基于quartz的可定制消息发送方法,其特征在于:所述步骤(2)中,根据不同的模板生成不同的消息,根据消息接收人的权限范围,依据消息模板生成的消息中的数据会略有不同。
4.根据权利要求1所述的基于quartz的可定制消息发送方法,其特征在于:所述步骤(4)中,quartz.propeties文件中配置集群中各服务器的ID和quartz调度器ID,quartz线程池的实现类,quartz线程池中线程数,quartz线程优先级,实现集群时任务的存储实现方式,quartz存储任务相关数据的表的前缀,连接数据库数据源名称,是否启用集群,连接数据库的实现类,连接数据库链接,连接数据库用户名,连接数据库密码和最大数据库连接数。
5.根据权利要求4所述的基于quartz的可定制消息发送方法,其特征在于:
所述各服务器的ID自动生成,无需修改;由于配置集群时,只有一个quartz调度器,集群中每个服务器的quartz调度器ID值都相同;
所述quartz线程池中线程数根据任务量和负责程度来调整;
所述quartz线程优先级为:当任务到达执行时间,且线程池中没有可用线程时,若任务等待的时间超过配置的最大值,则本次任务不执行,等待下一次执行时间的到来;
启用集群后,集群中的服务器相互检测间隔,各服务器按照配置的时间间隔往服务器中更新状态;当服务器超过配置时间没有更新状态时,调度器认为该服务器已经down掉,不再分配任务给该服务器;
所述连接数据库的实现类与连接数据库链接的配置参照IAM数据库配置文件中的配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710629863.9A CN107277171A (zh) | 2017-07-28 | 2017-07-28 | 一种基于quartz的可定制消息发送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710629863.9A CN107277171A (zh) | 2017-07-28 | 2017-07-28 | 一种基于quartz的可定制消息发送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107277171A true CN107277171A (zh) | 2017-10-20 |
Family
ID=60075030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710629863.9A Pending CN107277171A (zh) | 2017-07-28 | 2017-07-28 | 一种基于quartz的可定制消息发送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107277171A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246226A (zh) * | 2018-09-25 | 2019-01-18 | 行吟信息科技(上海)有限公司 | 一种消息生成方法及装置 |
CN109286681A (zh) * | 2018-11-08 | 2019-01-29 | 合肥帧讯软件有限公司 | 数据交换服务软件 |
CN109660960A (zh) * | 2018-09-27 | 2019-04-19 | 深圳壹账通智能科技有限公司 | 短信配置方法、装置、设备及可读存储介质 |
CN111327519A (zh) * | 2020-02-17 | 2020-06-23 | 北京四信数字技术有限公司 | 一种多渠道消息内容的发送方法、装置、设备及存储介质 |
CN111966474A (zh) * | 2020-08-11 | 2020-11-20 | 武汉遂意语联网络科技有限公司 | 控制定时任务的方法及装置 |
CN112685164A (zh) * | 2021-01-08 | 2021-04-20 | 浪潮软件科技有限公司 | 基于dac定时任务发送日报的方法及系统 |
CN114415899A (zh) * | 2022-01-18 | 2022-04-29 | 平安科技(深圳)有限公司 | 消息发送方法、系统及计算机设备 |
CN116866427A (zh) * | 2023-09-04 | 2023-10-10 | 杭州比智科技有限公司 | 一种异构消息统一推送方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164262A (zh) * | 2011-12-15 | 2013-06-19 | 阿里巴巴集团控股有限公司 | 一种任务管理方法及装置 |
CN104616134A (zh) * | 2015-01-23 | 2015-05-13 | 北京京东尚科信息技术有限公司 | 一种报表分析报告推送方法及装置 |
CN105787058A (zh) * | 2016-02-26 | 2016-07-20 | 广州品唯软件有限公司 | 一种用户标签系统及基于用户标签系统的数据推送系统 |
CN105808653A (zh) * | 2016-02-26 | 2016-07-27 | 广州品唯软件有限公司 | 一种基于用户标签系统的数据处理方法及装置 |
-
2017
- 2017-07-28 CN CN201710629863.9A patent/CN107277171A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164262A (zh) * | 2011-12-15 | 2013-06-19 | 阿里巴巴集团控股有限公司 | 一种任务管理方法及装置 |
CN104616134A (zh) * | 2015-01-23 | 2015-05-13 | 北京京东尚科信息技术有限公司 | 一种报表分析报告推送方法及装置 |
CN105787058A (zh) * | 2016-02-26 | 2016-07-20 | 广州品唯软件有限公司 | 一种用户标签系统及基于用户标签系统的数据推送系统 |
CN105808653A (zh) * | 2016-02-26 | 2016-07-27 | 广州品唯软件有限公司 | 一种基于用户标签系统的数据处理方法及装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246226A (zh) * | 2018-09-25 | 2019-01-18 | 行吟信息科技(上海)有限公司 | 一种消息生成方法及装置 |
CN109660960A (zh) * | 2018-09-27 | 2019-04-19 | 深圳壹账通智能科技有限公司 | 短信配置方法、装置、设备及可读存储介质 |
CN109660960B (zh) * | 2018-09-27 | 2022-03-15 | 深圳壹账通智能科技有限公司 | 短信配置方法、装置、设备及可读存储介质 |
CN109286681A (zh) * | 2018-11-08 | 2019-01-29 | 合肥帧讯软件有限公司 | 数据交换服务软件 |
CN111327519A (zh) * | 2020-02-17 | 2020-06-23 | 北京四信数字技术有限公司 | 一种多渠道消息内容的发送方法、装置、设备及存储介质 |
CN111966474A (zh) * | 2020-08-11 | 2020-11-20 | 武汉遂意语联网络科技有限公司 | 控制定时任务的方法及装置 |
CN111966474B (zh) * | 2020-08-11 | 2024-04-02 | 武汉遂意语联网络科技有限公司 | 控制定时任务的方法及装置 |
CN112685164A (zh) * | 2021-01-08 | 2021-04-20 | 浪潮软件科技有限公司 | 基于dac定时任务发送日报的方法及系统 |
CN114415899A (zh) * | 2022-01-18 | 2022-04-29 | 平安科技(深圳)有限公司 | 消息发送方法、系统及计算机设备 |
CN116866427A (zh) * | 2023-09-04 | 2023-10-10 | 杭州比智科技有限公司 | 一种异构消息统一推送方法及系统 |
CN116866427B (zh) * | 2023-09-04 | 2023-12-12 | 杭州比智科技有限公司 | 一种异构消息统一推送方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107277171A (zh) | 一种基于quartz的可定制消息发送方法 | |
US8140373B2 (en) | Data driven dynamic workflow | |
Yu et al. | A novel architecture for realizing grid workflow using tuple spaces | |
Dong et al. | Autonomia: an autonomic computing environment | |
CN103197969B (zh) | 一种分布式定时任务控制装置及方法 | |
US7240324B2 (en) | Event-based scheduling method and system for workflow activities | |
US7979859B2 (en) | Managing automated resource provisioning with a workload scheduler | |
US8195739B2 (en) | Adaptive polling | |
CN112181621B (zh) | 一种任务调度系统、方法、设备及存储介质 | |
CN105260248B (zh) | 一种可动态调整的任务调度系统和调度方法 | |
US20090089785A1 (en) | System and method for job scheduling in application servers | |
US8250131B1 (en) | Method and apparatus for managing a distributed computing environment | |
CN101887381A (zh) | 基于Quartz框架的配置定时任务的方法和装置 | |
CA2356563A1 (en) | System for scheduling and monitoring computer processes | |
CN108874524A (zh) | 大数据分布式任务调度系统 | |
CN1589442A (zh) | 用于与多重调度池进行消息接发的应用服务器的系统 | |
CN108958915A (zh) | 定时任务执行方法及装置 | |
CN105824695A (zh) | 一种定时任务调度插件Quartz使用 | |
CN106462459A (zh) | 为分布式处理系统管理元数据 | |
US20050030555A1 (en) | Job processing framework | |
CN109165088A (zh) | 一种基于elastic-job框架可单机弹性扩容的任务分片方法 | |
Tan et al. | BPEL4JOB: A fault-handling design for job flow management | |
CN111651279A (zh) | 一种处理业务流程的方法及其处理系统 | |
CN115469989A (zh) | 分布式批量任务调度方法及系统 | |
US20100122254A1 (en) | Batch and application scheduler interface layer in a multiprocessor computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171020 |