Я задал так много вопросов по этому поводу, но все еще не смог настроить загрузку моего файла на S3.Также я не хотел помещать все детали в один вопрос и делать его слишком большим, чтобы читать другие.
Я написал свое приложение в многопоточном режиме для загрузки файлов в 3.Где-то моя многопоточность не работает, и поэтому я говорю, потому что, когда я печатал статус загрузки, я получаю ниже вывод
> Transfer: Uploading etc
> - State: Waiting
> - Progress: 0 Transfer: Uploading etc
> - State: Waiting
> - Progress: 0 Transfer: Uploading etc
> - State: Waiting
> - Progress: 0 Transfer: Uploading etc
> - State: Waiting
> - Progress: 0 Transfer: Uploading etc
> - State: InProgress
> - Progress: 0
Я вижу, что только один находится в состоянии выполнения, остальная часть потока находится в ожидании.Это мой признак того, что мои потоки не работают правильно.
Я подозреваю, что я создаю TransferManager
из Runnable
, и я передаю конструктор.
Вот мойкод.
Это мой исполнитель
public class UploadExecutor {
private static String fileLocation = "C:\\Users\\u6034690\\Desktop\\TWOFILE\\Samplefiles";
// private static String fileLocation="D:\\TRFAudits_Moved\\";
private static final String _logFileName = "s3FileUploader.log";
private static Logger _logger = Logger.getLogger(UploadExecutor.class);
@SuppressWarnings("unchecked")
public static void main(String[] args) {
_logger.info("----------Stating application's main method----------------- ");
AWSCredentials credential = new ProfileCredentialsProvider("TRFAuditability-Prod-ServiceUser").getCredentials();
final ClientConfiguration config = new ClientConfiguration();
AmazonS3Client s3Client = (AmazonS3Client) AmazonS3ClientBuilder.standard().withRegion("us-east-1")
.withCredentials(new AWSStaticCredentialsProvider(credential)).withForceGlobalBucketAccessEnabled(true)
.build();
s3Client.getClientConfiguration().setMaxConnections(100);
TransferManager tm = new TransferManager(s3Client);
// while (true) {
FileProcessThreads fp = new FileProcessThreads();
List<File> records = fp.process(fileLocation);
while (records.size() <= 0) {
try {
_logger.info("No records found willl wait for 10 Seconds");
TimeUnit.SECONDS.sleep(10);
records = fp.process(fileLocation);
} catch (InterruptedException e) {
_logger.error("InterruptedException: " + e.toString());
}
}
_logger.info("Total no of Audit files = " + records.size());
ExecutorService es = Executors.newFixedThreadPool(6);
int recordsInEachThread = (int) (records.size() / 6);
_logger.info("No of records in each thread = " + recordsInEachThread);
UploadObject my1 = new UploadObject(records.subList(0, recordsInEachThread), tm);
UploadObject my2 = new UploadObject(records.subList(recordsInEachThread, recordsInEachThread * 2), tm);
UploadObject my3 = new UploadObject(records.subList(recordsInEachThread * 2, recordsInEachThread * 3), tm);
UploadObject my4 = new UploadObject(records.subList(recordsInEachThread * 3, recordsInEachThread * 4), tm);
UploadObject my5 = new UploadObject(records.subList(recordsInEachThread * 4, recordsInEachThread * 5), tm);
UploadObject my6 = new UploadObject(records.subList(recordsInEachThread * 5, records.size()), tm);
es.execute(my1);
es.execute(my2);
es.execute(my3);
es.execute(my4);
es.execute(my5);
es.execute(my6);
es.shutdown();
}
}