SSM项目中定时任务中批数据处理的实现。

SSM项目中定时任务中批数据处理的实现。

1.POM文件添加依赖
	<!-- Quartz -->
		<dependency>
			 <groupId>org.quartz-scheduler</groupId>
			 <artifactId>quartz</artifactId>
			 <version>1.8.4</version>
		</dependency>
2.添加定时任务配置文件xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"
        >
         
    <!-- 线程执行器配置,用于任务注册 -->
	<bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		 <property name="corePoolSize" value="10" />
		 <property name="maxPoolSize" value="100" />
		 <property name="queueCapacity" value="500" />
	</bean>

 <!--每天晚上12点定时向C端同步新增会员的相关信息 0 0/3 * * * ?    0 0 0 * * ? *-->
   <!-- <bean id="UpdateOmoMemberToCTaskMa" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <bean
                    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                <property name="targetObject">
                    <bean
                            class="com.omo.job.controller.UpdateOmoMemberToCTask" />
                </property>
                <property name="targetMethod" value="excute" />
            </bean>
        </property>
        <property name="cronExpression" value="0 0 0 * * ? *" />
    </bean>-->

	<!-- 设置调度 -->
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		 <property name="triggers">
			  <list>
              <ref bean="UpdateOmoMemberToCTaskMa" />
			  </list>
		 </property>
		 <property name="taskExecutor" ref="executor" />
	</bean
</beans>
3.定时任务代码:
import com.omo.facade.OmoMemberService;
import com.omo.vo.OmoMember;
import com.omo.vo.ResultMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author Bob
 * @Date 2019/4/18 17:29
 */
public class UpdateOmoMemberToCTask {
     
     @Autowired
     private OmoMemberService omoMemberService;
    
    Logger logger = LoggerFactory.getLogger(UpdateOmoMemberToCTask.class);
    static boolean IS_RUNNING;
    //每次发100
    static Integer limitNum =150;
        OmoMember omoMember;
    
    public void excute() {
     
        try {
     
            logger.info("同步omo会员信息到C端信息开始。。。。");
            Long asqId = 0L;
            List<OmoMember> entitys = new ArrayList<>();
            //查询会员记录准备发送到C端新增会员的接口
            do {
     
                // 查询待发送至hro用户信息
                Map<String, Object> param = new HashMap<String, Object>();
                param.put("limitNum",limitNum);
                param.put("asqId",asqId);
                //需要添加各种条件
               entitys = omoMemberService.getMemberAboutInfo(param);
                if(entitys==null&&entitys.size()==0){
     
                    return;
                }
                for (OmoMember omoMember : entitys) {
     
                    try {
     
                        logger.info("omo新增会员信息同步到C端定时任务开始UpdateOmoMemberToCTask:"+omoMember.getMobile());
                        this.omoMember=omoMember;
                        //通过队列activeMQ发送信息到C端
                        ResultMessage resultMessage = omoMemberService.setMemberAboutInfo(omoMember);
                    } catch (Exception e) {
     
                        // TODO: handle exception
                        logger.error("新增会员到C端定时任务失败,"+omoMember.getMobile()+","+e.toString());
                    }
                }
                asqId = (asqId > omoMember.getId()) ? asqId :omoMember.getId();
            }while (null!=entitys && entitys.size()==limitNum.intValue());
        } catch (Exception e) {
     
            // TODO: handle exception
            logger.error("新增会员到C端定时任务失败"+e.toString());
        }
    }
}
具体的Service层代码以及sql信息:
 @Override
    public List<OmoMember> getMemberAboutInfo(Map<String, Object> searchParams) {
     
        return omoMemberDao.getMemberAboutInfo(searchParams);
    }
<!-- 查询需要调用C端新增会员接口时要传给C端的会员相关信息-->
    <select id="getMemberAboutInfo" resultMap="getMemberAboutInfo">
           SELECT om.*, (SELECT rip.id FROM resume_intention_place rip WHERE  rip.resume_id = om.resume_id ORDER BY rip.id DESC LIMIT 1 ) AS ripid
        FROM
        omo_member om
        WHERE
        om.id >= #{
     asqId}
        GROUP BY
        om.id
        ORDER BY
        om.id ASC
        LIMIT #{
     limitNum}
    </select>

ssm项目中定时任务中批数据的处理,谢谢。。。。

你可能感兴趣的:(SSM项目,定时任务,批数据,quartz)