@Async
实现每 Y 毫秒/秒执行 X 次的方法的最佳方法是什么。
我要求 Amazon SES 每秒仅发送 14 封电子邮件,我正在使用 Spring 的 @Async 注释异步执行此操作,但据我所知,我只能设置最大池和最大队列大小,而不能设置速率。
这是我所拥有的:
@Bean(name = "emailSenderThreadPoolTaskExecutor")
public Executor emailSenderThreadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(14); // send 14 at once
executor.setMaxPoolSize(14);
executor.setThreadNamePrefix("EmailThreadPool-");
executor.initialize();
return executor;
}
接着
@Async(value = "emailSenderThreadPoolTaskExecutor")
public void sendEmail(String emailTo, String subject) {
//...
}