如何在一个@Async中使用不同的执行程序

时间:2016-03-02 09:58:05

标签: java spring multithreading asynchronous

这是关于在使用@Async注释调用相同方法时如何使用不同的执行程序。

问题是我们希望对某些外部调用进行重试(和日志记录)策略。所有这些逻辑都在一个带有@Async注释的方法中,并且要执行的业务逻辑被传递给它(一个Runnable):

@Async(value = "DefaultTaskExecutor}")
public void executeAsyncAndRetry(AsyncTask asyncTask) {
    ...
}

但我们希望根据调用,使用不同的线程池。

我认为这个@Async注释并不允许el从参数或类似的东西中获取执行者。

是否有其他方法可以为此配置注释,或者使用不同的方法来指定不同的执行器?

1 个答案:

答案 0 :(得分:0)

是的,你可以。您需要在spring上下文文件中定义一个executor bean,并将这个bean id传递给@Async(" executor id"),如下所示。

EntityManager

有关详细信息,请参阅:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html