Azure 공유 폴더의 파일이 12시간 지나면 삭제하는 스케쥴러를 만들었다.
@Slf4j
@Component
public class TempFileManageScheduler {
@Value("${azure.storage.file.connectionString}")
private String edifactFileConnectionString;
@Value("${azure.storage.file.share}")
private String edifactFileShareName;
private static final Long TIME_TO_LIVE_HOURS = 6L;
private static final String TEMP_DIRECTORY_PATH = "temp/";
@Scheduled(fixedDelay = 100000)
public void deleteTempFile() {
try {
CloudFileShare fileShare = AzureFileHandler.getFileShare(edifactFileConnectionString, edifactFileShareName);
CloudFileDirectory rootDir = fileShare.getRootDirectoryReference();
CloudFileDirectory tempDir = rootDir.getDirectoryReference(TEMP_DIRECTORY_PATH);
Iterable<ListFileItem> fileIterable = tempDir.listFilesAndDirectories();
Date now = new Date();
for(ListFileItem tempFileItem : fileIterable) {
CloudFile tempFile = (CloudFile)tempFileItem;
try {
Date lastModifiedDate = tempFile.getProperties().getLastModified();
long timeDiff = (now.getTime() - lastModifiedDate.getTime())/ 3600000;
if(timeDiff >= TIME_TO_LIVE_HOURS) {
tempFile.deleteIfExists();
}
}catch(StorageException e) {
}
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
}
하지만 파일의 LastModifiedTime을 가지고와야 하는데
tempFile의 properties가 모두 null 또는 기본값으로 표시되었다.
CloudFile의 downloadAttributes() 메서드를 사용함으로써 파일의 속성을 받아왔다.
'Cloud > Azure' 카테고리의 다른 글
Local에서 Docker Image 만든 후, Azure 서버에 K8S로 배포하기 (0) | 2022.03.21 |
---|---|
Azure CLI(명령줄 인터페이스) 설치 및 K8S 자격증명 받기 (0) | 2022.03.21 |
Azure DevOps에서 SSH 키 설정하고 Git 프로젝트 Clon하기 (0) | 2022.03.11 |
BlobStorage의 LifeCycle(수명주기) 설정 방법 (0) | 2022.03.11 |
Blob Storage에 Blob Upload/Downalod/Copy, FileShare로 복사 (0) | 2022.03.11 |