Функция Azure для тайм-аута загрузки файла

#java #azure #azure-blob-storage #azure-queues

#java #azure #azure-blob-хранилище #azure-очереди

Вопрос:

Я создал приложение azure function и развернул его в azure. Приложение возьмет zip-файл из указанного контейнера и распакует его в другой контейнер или указанный контейнер. Мой код не загружает файл через 5 минут, указывая значение тайм-аута. Вот мое изображение ошибки с экрана журнала Azure

Мой код

 public class QueueTriggerFunction {
@FunctionName("QueueTriger")
public void execute(@QueueTrigger(name = "myQueueItem", dataType = "", queueName = "httpqueuereq", connection = "AzureWebJobsStorage") Details message,
         @BlobInput(
                  name = "file", 
                  dataType = "binary", connection = "AzureWebJobsStorage",
                  path = "{Path}") byte[] content,
                  final ExecutionContext executionContext) throws IOException {
    
     
     
     String connectStr = "DefaultEndpointsProtocol=https;AccountName=sdfswedfsf;AccountKey=dsdfsedfsfsffsf dfdfdfd==;EndpointSuffix=core.windows.net";
        
     // Create a BlobServiceClient object which will be used to create a container client
     BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
 
     //Create a unique name for the container
     String containerName = "output";

     // Create the container and return a container client object
     BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
     
     

     
     InputStream targetStream = new ByteArrayInputStream(content);
     
     ZipInputStream zipIn = new ZipInputStream(targetStream);
     ZipEntry zipEntry = zipIn.getNextEntry();
     while(zipEntry != null) {
 
        // Get a reference to a blob
         BlobClient blobClient = containerClient.getBlobClient(zipEntry.getName());
        
         ByteArrayOutputStream outputB = new ByteArrayOutputStream();
         byte[] buf = new byte[1024];
         int n;
         while ((n = zipIn.read(buf, 0, 1024)) != -1) {
             outputB.write(buf, 0, n);
         }

        
            
         // Upload to container
         ByteArrayInputStream inputS = new ByteArrayInputStream(outputB.toByteArray());
        
         // Upload to container
         blobClient.upload(inputS, inputS.available(), true);
         
        
         
         zipEntry = zipIn.getNextEntry();
     }
     zipIn.close();

}
 

}

Тот же код работает, когда я пытаюсь из приложения spirng boot. Ниже приведен рабочий код загрузки spring.

 @PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
    
    String connectStr = "DefaultEndpointsProtocol=https;AccountName=fffffffff;AccountKey=qj/ffffffffff/UuCmERTQ1uNXzXuhCD fffff==;EndpointSuffix=core.windows.net";
    
    // Create a BlobServiceClient object which will be used to create a container client
    BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();

    //Create a unique name for the container
    String containerName = "zipfiles";

    // Create the container and return a container client object
    BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
    
    // Get a reference to a blob
    BlobClient blobClient = containerClient.getBlobClient(file.getOriginalFilename());
    
    // Upload to container
    blobClient.upload(file.getInputStream(), file.getSize(), true);
    
    return "Done";
}
 

Пожалуйста, помогите кому-нибудь с решением.

Ответ №1:

Я посмотрел, кажется, ваш код в основном правильный. Убедитесь, что это не вызвано необходимостью процесса более 5 минут? Ваш zip-файл слишком большой?

Вы можете ознакомиться с приведенным ниже документом, и пусть настройки тайм-аута функции будут больше, и повторите попытку.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functiontimeout

Комментарии:

1. Размер файла не превышает 320 КБ. В любом случае, спасибо, я решил это, сославшись на ссылку