Todos os produtos
Search
Central de documentação

Intelligent Media Management:Processamento de tarefas assíncronas

Última atualização: Jun 27, 2026

O IMM oferece suporte a diversas operações de saída de dados. Algumas têm longa duração e não retornam resultados em uma única solicitação síncrona. Para esses casos, o IMM disponibiliza operações de API assíncronas, geralmente nomeadas no formato CreateXXXTask, e um mecanismo de notificação para recuperação dos resultados.

Nota

As operações de API assíncronas do IMM foram projetadas para jobs de longa duração que não retornam resultados em uma única solicitação síncrona. Essa abordagem evita o bloqueio do cliente, melhora o desempenho do sistema e executa jobs agendados ou que consomem muitos recursos em segundo plano, sem afetar a experiência do usuário.

Como funciona

  1. Faça upload dos dados de source para o Object Storage Service (OSS) da Alibaba Cloud.

  2. Chame uma operação de API do IMM, como CreateXXXTask, para iniciar uma tarefa assíncrona.

  3. O IMM recupera e processa os dados de source a partir do URI do OSS especificado.

  4. O IMM grava os resultados do processamento no URI do OSS especificado.

  5. Após a conclusão da tarefa, o IMM envia o status para o tópico MNS ou ApsaraMQ for RocketMQ especificado.

  6. Em seguida, o MNS ou ApsaraMQ for RocketMQ envia a mensagem de notificação por push para sua aplicação ou serviço.

Entrada e saída da tarefa

  • Os parâmetros de dados de entrada geralmente têm o prefixo Source. Os seguintes parâmetros estão disponíveis:

    • SourceURI: Localização dos dados de entrada. Apenas URIs do OSS são suportados.

    • Sources: Array com múltiplos URIs de entrada.

    • Source: Objeto com múltiplos URIs de entrada.

  • Os parâmetros de dados de saída geralmente têm o prefixo Target. Os seguintes parâmetros estão disponíveis:

    • TargetURI: Destino da saída. Este parâmetro suporta sintaxe de modelo.

    • TargetURIPrefix: Prefixo do URI de destino da saída.

    • Target: Objeto com múltiplos URIs de saída.

Importante

Os dados de entrada e saída devem estar na mesma região do serviço IMM.

URI do OSS

Um URI do OSS identifica exclusivamente um recurso no OSS e utiliza o formato oss://<bucket>/<object>, por exemplo, oss://test-bucket/test-object/test.docx.

Nota

<bucket> é o nome de um bucket do OSS na mesma região do seu projeto. <object> é o caminho completo para o arquivo, incluindo sua extensão.

Formatos inválidos comuns incluem:

  • http://bucket.oss-cn-hangzhou.aliyuncs.com/test-object/test.docx

  • oss://bucket.oss-cn-hangzhou.aliyuncs.com/test-object/test.docx

Modelo de TargetURI

Um modelo de TargetURI permite usar placeholders em um URI. Esses placeholders são substituídos por valores reais durante a execução para gerar dinamicamente o URI final de saída. Exemplo: oss://{bucket}/{tags.custom}/{dirname}/{barename}.{autoext}.

Para mais informações, consulte Modelo de TargetURI.

Autorização

Para tarefas assíncronas, conceda permissões ao IMM para ler dados de entrada e gravar dados de saída nos locais fornecidos. O parâmetro Project Name na solicitação determina essas permissões, pois identifica o projeto e sua função vinculada a serviço associada. Especifique essa função para o projeto usando o parâmetro Service Role na operação de API Crie Projeto. Por padrão, o sistema usa a função AliyunIMMDefaultRole, criada automaticamente ao ativar o serviço. Durante o processamento da tarefa, o IMM assume essa função para acessar seus dados.

Obtenção do status da tarefa

Uso de MNS ou ApsaraMQ for RocketMQ

Conforme descrito na seção Como funciona, configure o MNS ou ApsaraMQ for RocketMQ para receber notificações de status de tarefas do IMM. Este é o método recomendado. Para detalhes sobre o formato da notificação, consulte Formato de mensagem de notificação assíncrona.

Importante

O MNS ou ApsaraMQ for RocketMQ deve estar na mesma região do IMM.

  • (Recomendado) Use o parâmetro Notification para especificar a configuração do MNS ou ApsaraMQ for RocketMQ para notificações assíncronas.

    • MNS: Use o campo MNS no parâmetro Notification para especificar o endpoint e o tópico do MNS.

      {
        "Notification": {
          "MNS": {
            "Endpoint": "The MNS endpoint",
            "TopicName": "The MNS topic"
          }
        }
      }
    • ApsaraMQ for RocketMQ: Use o campo RocketMQ no parâmetro Notification para especificar o endpoint, o tópico e o ID da instância do ApsaraMQ for RocketMQ.

      {
        "Notification": {
          "RocketMQ": {
            "Endpoint": "The ApsaraMQ for RocketMQ endpoint",
            "TopicName": "The ApsaraMQ for RocketMQ topic",
            "InstanceId": "The ApsaraMQ for RocketMQ instance ID"
          }
        }
      }
  • Use os parâmetros NotifyEndpoint e NotifyTopicName para especificar o endpoint e o tópico do MNS destinados ao recebimento de notificações de mensagens assíncronas.

    • NotifyEndpoint: Endpoint do MNS para recebimento de notificações. Por padrão, este é o endpoint do MNS do chamador.

    • NotifyTopicName: Nome do tópico do MNS. Se este parâmetro estiver vazio, nenhuma notificação será enviada.

Uso da API GetTask

O IMM também fornece a operação de API GetTask para consultar o status de uma tarefa.

Embora seja possível chamar repetidamente a operação de API GetTask para sondar o status de uma tarefa até sua conclusão, esse método é ineficiente e não recomendado para ambientes de produção. Em tarefas de longa duração, a sondagem pode resultar em um grande número de chamadas à API GetTask. Se houver muitas tarefas na fila, isso poderá acionar limitação global e afetar outras chamadas de API. Além disso, a sondagem introduz latência. Uma tarefa pode terminar a qualquer momento entre as sondagens, mas você só saberá da conclusão na próxima verificação, o que gera um atraso médio equivalente à metade do intervalo de sondagem.

Nota

As informações da tarefa são retidas por apenas 7 dias após o início; depois desse período, elas não podem mais ser recuperadas.

Uso de tags

O parâmetro Tags na solicitação permite aplicar tags a uma tarefa. Use as tags das seguintes maneiras:

  • Pesquisar tarefas por tag.

  • Usar tags como variáveis em um modelo de TargetURI.