AWS Java SDK - использование ProgressListener с TransferManager - PullRequest
0 голосов
/ 10 апреля 2019

Я смотрю пример использования, предоставленный в документации AWS SDK для TransferManager , в частности для следующего кода:

TransferManager tx = new TransferManager(
               credentialProviderChain.getCredentials());
Upload myUpload = tx.upload(myBucket, myFile.getName(), myFile);
 // Transfers also allow you to set a <code>ProgressListener</code> to receive
// asynchronous notifications about your transfer's progress.
myUpload.addProgressListener(myProgressListener);

и мне интересно, нет ли у нас здесь случая гонки? AFAIU TransferManager работает асинхронно, он может начать загрузку файла сразу после создания объекта Upload, даже до того, как мы добавим прослушиватель, поэтому, если мы используем фрагмент, как предусмотрено в документах, кажется, что мы выиграли не получаю все уведомления. Я кратко посмотрел на addProgressListener и не вижу там, чтобы прошлые события воспроизводились при подключении нового слушателя. Я ошибся? Я что-то упустил?

1 Ответ

1 голос
/ 10 апреля 2019

Если вам нужно получить ВСЕ события, я думаю, что это может быть достигнуто с использованием другого метода upload, который принимает ProgressListener в качестве параметра. Конечно, использование этого метода потребует инкапсуляции вашего имени группы, ключа и файла в экземпляр PutObjectRequest.

...