我有一个类MessageProcessor
被另一个类中的另一个方法调用(即调用者)。
public class Caller {
@Scheduled(filxedDelay=10)
public void poll(){
//do stuff
messageProcessor.process(msg);
}
}
public class MessageProcessor{
@Async(value="abcExecutor")
public void process(String msg){
//do stuff here.
}
}
Spring文件看起来像:
<task:executor id="abcExecutor" pool-size="9" rejection-policy-"CALLER_RUNS"/>
我想添加另一个@Async执行器:
@Async(value="defExecutor")
public void remove(String msg){
//do stuff here.
}
@Scheduled(filxedDelay=10)
public void kill(){
//do stuff
messageProcessor.remove(msg);
}
在spring文件中添加另一个执行程序:
<task:executor id="defExecutor" pool-size="9" rejection-policy="CALLER_RUNS"/>
但是如何在<task:annotation-driven executor="abcExecutor" scheduler="scheduler" mode="proxy" proxy-target-class="true"/>
如何使用注释运行这些多个执行程序?
PS :显然,我不希望同时使用相同的池
@Async
方法
答案 0 :(得分:12)
@Async("defExecutor")
足以指定第二执行者要处理的方法。 xml声明仅指定默认执行程序,只要@Async
中未指定任何值,就会使用该执行程序。
答案 1 :(得分:-2)
那么,它是一个正确的XML吗?
<task:executor id="abcExecutor" pool-size="9" rejection-policy-"CALLER_RUNS"/>
<task:executor id="defExecutor" pool-size="9" rejection-policy="CALLER_RUNS"/>
<task:annotation-driven executor="abcExecutor" scheduler="scheduler" mode="proxy" proxy-target-class="true"/>