`
pavel
  • 浏览: 928224 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring异步任务

阅读更多

<!-- 任务从此处开始加载 -->        

<bean id="notifySpringScheduledExecutorFactoryBean" class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean">            <property name="scheduledExecutorTasks">        

  1.         <list>        
  2.             <ref bean="notifySpringScheduledExecutorTask" />        
  3.         </list>        
  4.     </property>        
  5. </bean>        
  6. <!-- 待加入Spring Schedual进行调度的task列表 -->        
  7. <bean id="notifySpringScheduledExecutorTask" class="org.springframework.scheduling.concurrent.ScheduledExecutorTask">        
  8.     <property name="runnable" ref="notifyScheduledMainExecutor" />        
  9.     <!-- 初次执行任务delay时间,单位为ms,默认值为0,代表首次加载任务时立即执行;比如1min -->        
  10.     <property name="delay" value="60000" />        
  11.     <!-- 间隔时间,单位为ms,默认值为0,代表任务只执行一次;比如2min -->        
  12.     <property name="period" value="120000" />        
  13.     <!-- 是否采用fixedRate方式进行任务调度,默认为false,即采用fixedDelay方式 -->        
  14.     <!-- fixedRate:定时间隔执行,不管上次任务是否已执行完毕;fixedDelay:每次任务执行完毕之后delay固定的时间 -->        
  15.     <property name="fixedRate" value="true" />        
  16. </bean>        
  17. <!-- 任务调度主线程 -->        
  18. <bean id="notifyScheduledMainExecutor" class="com.alisoft.aep.notify.schedual.NotifyScheduledMainExecutor">        
  19.     <!-- 针对Notify服务端的Service,用于更新Notify重试信息等 -->        
  20.     <property name="notifyServerService" ref="notifyServerService" />        
  21.     <!-- notify.notifyId缓存策略实现类,可自行扩展 -->        
  22.     <property name="notifyIdCacheStrategy" ref="defaultNotifyIdCacheStrategy" />        
  23.     <!-- notify.load_balance_num字段值生成、以及调度时where条件中取值的策略实现类,可自行扩展 -->        
  24.     <!-- 当有多台notify服务器时才有用,用于平衡各台server间的压力;一般不用配置 -->        
  25.     <!-- <property name="loadBalanceNumStrategy" ref="alternateLoadBalanceNumStrategy" /> -->        
  26.     <!-- notify.handler字段值在调度时where条件中取值的策略实现类,可自行扩展 -->        
  27.     <!-- 当有多台notify服务器时才有用,用于表明某台server可执行哪些handler;一般不用配置 -->        
  28.     <!-- <property name="notifyHandlerStrategy" ref="defaultNotifyHandlerStrategy" /> -->        
  29.     <!-- 当有多台notify服务器时才有用,用于设置某台server调度时每次读取的Notify最大数,用于覆盖maxNum;一般不用配置 -->        
  30.     <!-- <property name="notifyMaxNumPerJobStrategy" ref="defaultNotifyMaxNumPerJobStrategy" /> -->        
  31.     <!-- 用于并发的线程池 -->        
  32.     <property name="notifyTaskExecutor" ref="notifyTaskExecutor" />        
  33.     <!-- 每次调度读取的Notify最大记录数,默认为1000 -->        
  34.     <property name="maxNum" value="1000" />        
  35.     <property name="notifyDao" ref="notifyDao" />        
  36. </bean>        
  37.                  
  38. <!-- 异步线程池 -->        
  39. <bean id="notifyTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">        
  40.     <!-- 核心线程数,默认为1 -->        
  41.     <property name="corePoolSize" value="10" />        
  42.     <!-- 最大线程数,默认为Integer.MAX_VALUE -->        
  43.     <property name="maxPoolSize" value="50" />        
  44.     <!-- 队列最大长度,一般需要设置值>=notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE -->        
  45.     <property name="queueCapacity" value="1000" />        
  46.     <!-- 线程池维护线程所允许的空闲时间,默认为60s -->        
  47.     <property name="keepAliveSeconds" value="300" />        
  48.     <!-- 线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 -->        
  49.     <property name="rejectedExecutionHandler">        
  50.         <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->        
  51.         <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度 -->        
  52.         <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->        
  53.         <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->        
  54.         <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />        
  55.     </property>        
  56. </bean>        
  57. <bean id="notifyServerService" class="com.alisoft.aep.notify.service.impl.NotifyServerServiceImpl">        
  58.     <!-- 针对任务执行失败后Notify如何重试的策略实现类,可自行扩展 -->        
  59.     <property name="notifyRetryStrategy" ref="defaultNotifyRetryStrategy" />        
  60.     <!-- 针对任务执行失败后异常处理策略实现类,可自行扩展 -->        
  61.     <!-- 默认不对异常进行补救,具体handler实现类中若返回NULL或抛出异常,则均按异常处理,直接将Notify记录迁移到历史表中,不进行重试; -->        
  62.     <!-- <property name="notifyHandlerExceptionStrategy" ref="defaultNotifyHandlerExceptionStrategy" /> -->        
  63.     <!-- 描述见notifyScheduledMainExecutor -->        
  64.     <property name="notifyIdCacheStrategy" ref="defaultNotifyIdCacheStrategy" />        
  65.     <!-- 事务模板,需保证能够找到对应的bean -->        
  66.     <property name="transactionTemplate" ref="transactionTemplate" />        
  67.     <property name="notifyDao" ref="notifyDao" />        
  68. </bean>   

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sfdev/archive/2009/04/08/4056114.aspx

分享到:
评论

相关推荐

    基于Spring打造简单高效通用的异步任务处理系统

    在构建一个基于Spring的简单高效通用异步任务处理系统时,我们的主要目标是实现轻量级、简单、高效、通用、高扩展性和高可靠性的解决方案。在这个系统中,我们将利用Spring框架的功能,如Job调度和线程池封装,以及...

    spring异步调用的例子

    这个注解来自`org.springframework.scheduling.annotation`包,它会将该方法委托给Spring的异步任务执行器来处理。执行器通常是基于Java的`ExecutorService`,Spring提供了多种配置选项来创建和管理执行器。 要启用...

    Spring 异步多线程动态任务处理的使用心得

    在现代应用中,高效地处理并发任务是至关重要的,Spring为此提供了异步任务处理的功能,可以显著提升系统的响应速度和性能。本文将深入探讨在Spring中如何利用多线程和动态任务来实现异步处理,并分享一些实践心得。...

    Spring MVC异步模式

    在使用`@Async`之前,需要配置一个`TaskExecutor`,这是Spring用于执行异步任务的接口。Spring MVC默认提供了一个简单的`SimpleAsyncTaskExecutor`,但通常我们会选择更高效的实现,如`ThreadPoolTaskExecutor`。 ...

    spring定时任务关键jar包(齐全)

    `spring-context-support.jar`是Spring框架对Quartz和Commons JCR等第三方调度库的支持,同时也包含Spring自己的`TaskExecutor`和`TaskScheduler`接口,用于实现异步任务和定时任务。 1. **Spring TaskExecutor**: ...

    spring线程池(同步、异步).docx

    一、Spring异步线程池类图 Spring提供了一系列的`TaskExecutor`实现,它们根据不同的需求和场景有不同的特性和行为。这些实现包括但不限于: 1. `SimpleAsyncTaskExecutor`:每次请求都会启动新的线程,不进行线程...

    spring3.0异步

    为了启用异步处理,需要配置`AsyncConfigurer`接口或者`&lt;task:annotation-driven/&gt;`元素,并提供一个`Executor` bean来处理异步任务。 ### 3. Spring MVC 异步处理 在Spring MVC中,我们可以通过`@Async`注解实现...

    springboot异步任务案例

    在Spring Boot框架中,异步任务处理是一种常见需求,它能提高应用的性能和响应速度。Spring Boot提供了简单易用的API和注解来支持异步任务的实现,特别是通过`@Async`注解和定时任务`@Scheduled`。下面我们将深入...

    spring的定时任务和异步方法

    需要注意的是,异步方法必须在一个启用了`@EnableAsync`的配置类中使用,Spring会自动配置一个任务执行器来处理这些异步任务。 Spring的定时任务和异步方法是提高系统效率和实现复杂业务逻辑的重要工具。通过合理...

    Spring3.2异步处理http请求

    `AsyncConfigurer`是Spring提供的接口,用于自定义异步任务的配置,包括`TaskExecutor`的选择和设置。`TaskExecutor`是Spring的核心组件,负责线程池的管理,用于执行异步任务。 ```java @Configuration @...

    spring 任务调度

    - **基本概念**:Spring Task是Spring框架的一部分,提供了基本的定时任务调度功能,包括`@Scheduled`注解用于标记定时任务,以及`TaskScheduler`和`ThreadPoolTaskScheduler`接口用于异步执行任务。 - **@...

    Spring定时任务

    Spring提供`@Async`注解来支持异步任务执行,可以将定时任务与主线程分离,避免阻塞。同时,通过`@Scheduled`注解的`concurrent`属性,可以控制多个实例是否并发执行。 8. **监听任务状态** Spring还提供了`...

    Java课程实验 Spring Boot 任务管理(源代码+实验报告)

    3.使用Spring的异步任务(AsyncTask): 使用@Async注解可以将普通的方法异步执行,使其成为一个异步任务。可以在方法上添加@Async注解并配合@EnableAsync注解将其激活。 4.使用第三方库,如Quartz: 除了使用Spring...

    Spring定时任务实现(非Web项目)

    1. **ThreadPoolTaskExecutor**:这是一个线程池任务执行器,它允许我们异步执行任务,适用于大量并发的任务执行。 2. **ScheduledTaskRegistrar**:这是一个注册器,用来注册定时任务。 3. **...

    Spring 定时任务源码(spring 三种定时任务的实现方式)

    TaskExecutor接口是Spring提供的一个异步任务执行接口,它并不直接支持定时任务,但可以通过配合ScheduledExecutorService或者ThreadPoolTaskScheduler来实现定时任务。ScheduledExecutorService是Java的并发库提供...

    Spring实现任务调度.rar

    `TaskExecutor`接口提供了一个简单的API来执行异步任务。你可以使用`ThreadPoolTaskExecutor`或`SimpleAsyncTaskExecutor`等实现类来配置线程池或者简单地为每个任务创建新线程。配置`TaskExecutor`时,可以调整...

    Springboot启用async异步调用

    因此,我们可以通过配置自定义的`TaskExecutor`来调整异步任务的执行策略,例如使用线程池: ```java @Configuration @EnableAsync public class AppConfig implements AsyncConfigurer { @Override public ...

    Java多线程之定时任务 以及 SpringBoot多线程实现定时任务——异步任务

    1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled

Global site tag (gtag.js) - Google Analytics