<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="renewalReminderBean" class="com.playphone.billing.renewal.RenewalReminderBean"/>
<bean id="renewalReminderJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.playphone.billing.renewal.RenewalReminderJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="renewalReminderBean">
<ref bean="renewalReminderBean" />
</entry>
</map>
</property>
</bean>
<bean id="cronRenewalReminderTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="renewalReminderJob" />
</property>
<property name="cronExpression">
<value>0 0/500 * * * ?</value>
</property>
</bean>
<bean id="recurrentBillingScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronRenewalReminderTrigger"/>
</list>
</property>
</bean>
</beans>
renewalReminderBean java code:
public class RenewalReminderBean {
/**
* Get A Instance Of Log
*/
private static Log log = LogFactory.getLog(RenewalReminderBean.class);
/**
* 1.fetch account list belong to accountGroup from database
* 2.put message in queue
*/
public void sendRenewalReminder() {
List accountList = null;
IAcctAccountgroupDAO accAccountgroupDao = (IAcctAccountgroupDAO) SpringBeanLoader
.loadBean("AcctAccountgroupDAOProxy");
try {
accountList = accAccountgroupDao.findAll();
} catch (Exception e) {
log.error("fetch all accountGroup from database Exception. Caused by "
+ e.getMessage(), e);
return;
}
AcctAccountgroup accountGroup = null;
SubsActivePlanDAO reminderDAO = null;
List<RenewalReminder> returnUserList = null;
for (Iterator it = accountList.iterator(); it.hasNext();) {
accountGroup = (AcctAccountgroup) it.next();
try {
reminderDAO = new SubsActivePlanDAO();
returnUserList = reminderDAO.findRenewalReminderBy(accountGroup);
} catch (Exception e) {
log.error("send renewal message throw exception. Caused by "
+ e.getMessage(), e);
}
sendRenewalMessage(returnUserList);
}
}
/**
* put message to queue.
* @param userList the account which receive message
*/
private void sendRenewalMessage(List<RenewalReminder> userList) {
RenewalReminderProducer producer = (RenewalReminderProducer) SpringBeanLoader
.loadBean("renewalReminderProducer");
for (RenewalReminder user : userList) {
producer.send(user);
}
}
}
public class RenewalReminderJob extends QuartzJobBean {
/**
* Get A Instance Of Log
*/
private Log log = LogFactory.getLog(RenewalReminderJob.class);
/**
* JavaBean of RenewalReminder
*/
private RenewalReminderBean renewalReminderBean;
/**
* set RenewalReminderBean with Spring IOC Container
* @param renewalReminderBean javabean
*/
public void setRenewalReminderBean(RenewalReminderBean renewalReminderBean) {
this.renewalReminderBean = renewalReminderBean;
}
/**
* override the executeInternal
* @param arg0 JobExecutionContext
* @throws JobExecutionException JobExecutionException
*/
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
if (log.isInfoEnabled()) {
log.info("RenewalReminder Job is Starting....");
}
long startTime = System.currentTimeMillis();
renewalReminderBean.sendRenewalReminder();
long endTime = System.currentTimeMillis();
if (log.isInfoEnabled()) {
log.info("RenewalReminder Job is Completed. Total spend time : "
+ (endTime - startTime) + "ms");
}
}
}
public class ScheduleJobStart {
private static boolean started = false;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ScheduleJobStart.start();
}
public static void start() {
if (!started) {
new ClassPathXmlApplicationContext("/billingSchedulerContext.xml");
started = true;
}
}
/**
* @return Returns the started.
*/
public static boolean isStarted() {
return started;
}
/**
* @param started The started to set.
*/
public static void setStarted(boolean started) {
ScheduleJobStart.started = started;
}
}
分享到:
相关推荐
2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中,声明一个`SchedulerFactoryBean`,这是Spring提供的用于管理Quartz Scheduler的bean。 ```xml <bean id="scheduler" class="org.spring...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...
在配置完成后,你可以通过Spring的ApplicationContext来加载Quartz的相关配置,并使用Spring管理的bean作为Job执行器。这样,你可以在Spring的环境中无缝地使用Quartz进行任务调度。 在Quartz的配置中,你需要定义...
在Spring配置文件(如`applicationContext.xml`)中,定义`SchedulerFactoryBean`来实例化和配置Quartz Scheduler: ```xml <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz....
demo中主要实现了Spring与Quartz的结合使用。其中哟两种配置方式,一种是任务pojo方式,另一种是集成Sprihng中的QuartzBean,实际上是实现了Job接口,具体的操作信息在相应的博客中有说明。
Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...
quartz框架定时任务在spring中的配置
2. **创建作业bean**:在Spring配置文件中声明这个作业bean,并设置其类为`MyJob`: ```xml ``` 3. **定义触发器**:触发器控制作业何时执行。Quartz提供了多种类型的触发器,如SimpleTrigger、CronTrigger等。...
学习Quartz和Spring-Quartz,不仅需要理解它们的基本概念,还要掌握如何在实际项目中进行配置和使用。例如,创建一个定时任务,你需要定义Job类,配置Trigger,然后在Spring的配置文件中设置Scheduler。此外,熟悉...
接下来是在Spring配置文件中对Quartz进行配置。以下是配置示例: ```xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!-- 要调用的工作类 --> ...
- 配置Quartz:在Spring的配置文件(如`applicationContext.xml`)中,定义`SchedulerFactoryBean`,配置Quartz的基本参数,如线程池大小、JobStore类型等。 - 注册Job和Trigger:在配置文件中,通过`<bean>`标签...
2. 在Spring配置文件中创建`SchedulerFactoryBean`,配置数据源和Quartz属性。 3. 配置`quartz.properties`,指定数据库连接和Quartz参数。 4. 设计并实现`Job`和`Trigger`,定义任务逻辑和执行时机。 5. 在集群环境...
2. 配置 Scheduler:在 Spring 配置文件中,设置 Quartz 的 SchedulerFactoryBean,指定数据库存储(如果需要持久化任务信息)和相关的配置属性。 3. 定义 Job 和 Trigger:创建 Quartz 作业类(Job),实现 org....
在Spring配置文件中,我们可以声明这些bean并关联它们,这样Spring就能自动管理和触发Quartz任务。 集群配置的关键在于确保所有节点都能共享相同的任务状态和调度信息。Quartz通过使用数据库存储作业和触发器来实现...
2. 配置 Quartz:在 Spring 的配置文件(如 `application.properties` 或 `application.yml`)中,可以设置 Quartz 的基本属性,如线程池大小、作业存储策略等。 ```properties # application.properties 示例 ...
2. **SchedulerFactoryBean**:这是Spring提供的一个工厂bean,用于配置和启动Quartz的Scheduler。你可以通过这个bean设置Quartz的相关配置,比如数据库连接、job存储策略、线程池大小等。 3. **Job和Trigger**:在...
spring-quartz的标准配置文件
Spring提供了一个名为`org.springframework.scheduling.quartz`的包,其中包含了一些用于配置和管理Quartz的类和接口。通过Spring的XML配置或Java配置,我们可以声明式地定义Job(任务)和Trigger(触发器),并将...
1. **Spring配置Quartz**: - 使用`@EnableScheduling`注解开启定时任务支持。 - 创建一个配置类,使用`@Configuration`和`@EnableScheduling`注解。 - 配置`SchedulerFactoryBean`,通过`@Bean`注解创建并配置...
2. **Spring配置文件**:在Spring的XML配置文件中,我们需要声明一个`SchedulerFactoryBean`,它是Spring对Quartz调度器的封装。通过这个bean,我们可以配置Quartz的相关属性,如JobStore类型(内存或数据库存储),...