package com.aol.micro.server.s3.plugin;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.aol.micro.server.s3.S3Configuration;
@Configuration
public class S3TransferManagerProvider {
@Autowired
private S3Configuration s3Configuration;
@Autowired
private AmazonS3Client amazonS3Client;
@Bean
public TransferManager getTransferManager() {
return new TransferManager(
amazonS3Client, s3UploadExecutorService());
}
@Bean
public ExecutorService s3UploadExecutorService() {
ThreadFactory threadFactory = new ThreadFactory() {
private int threadCount = 1;
public Thread newThread(Runnable r) {
Thread thread = new Thread(
r);
thread.setName(s3Configuration.getUploadThreadNamePrefix() + threadCount++);
return thread;
}
};
return Executors.newFixedThreadPool(s3Configuration.getUploadThreads(), threadFactory);
}
}