全部产品
Search
文档中心

Intelligent Media Management:Pemrosesan tugas asinkron

更新时间:Jul 06, 2025

Intelligent Media Management (IMM) dapat memproses berbagai jenis data. Beberapa jenis data memerlukan waktu lama untuk diproses dan hasilnya tidak dapat langsung dikembalikan dalam satu permintaan. IMM menyediakan operasi API asinkron untuk memproses data tersebut. Sebagian besar operasi API asinkron diberi nama dalam format CreateXXXTask. Selain itu, IMM memungkinkan Anda mendapatkan hasil tugas melalui notifikasi pesan.

Catatan

Operasi API IMM asinkron memproses permintaan yang memakan waktu dan tidak dapat mengembalikan hasil secara sinkron. Dalam pemrosesan asinkron, data diproses di latar belakang tanpa memengaruhi pengalaman pengguna. Pemrosesan ini menghindari pemblokiran utas utama dan membantu meningkatkan kinerja sistem.

Proses tugas

  1. Unggah data sumber ke Alibaba Cloud Object Storage Service (OSS).

  2. Panggil operasi API IMM asinkron dalam format CreateXXXTask untuk membuat tugas asinkron.

  3. IMM mengambil data sumber dari URI OSS yang Anda tentukan.

  4. IMM menulis hasil pemrosesan data ke URI OSS yang Anda tentukan.

  5. IMM mengirim status tugas dalam pesan ke topik Message Service (MNS) atau ApsaraMQ for RocketMQ yang Anda tentukan.

  6. MNS atau ApsaraMQ for RocketMQ mendorong pesan ke layanan Anda.

Input dan output tugas

  • Nama parameter untuk data input umumnya memiliki awalan Source. Parameter berikut didukung:

    • SourceURI: alamat data input. Atur nilainya ke URI OSS.

    • Sources: array dari beberapa URI input.

    • Source: alamat data input. Gunakan parameter ini untuk menentukan beberapa URI.

  • Nama parameter untuk data output umumnya memiliki awalan Target. Parameter berikut didukung:

    • TargetURI: alamat data output. Parameter ini mendukung sintaks template.

    • TargetURIPrefix: awalan alamat data output.

    • Target: alamat data output. Gunakan parameter ini untuk menentukan beberapa URI.

Penting

Data input dan output harus berada di wilayah yang sama dengan IMM.

OSS URI

URI Object Storage Service (OSS) mengikuti format oss://<bucket>/<object> dan secara unik mengidentifikasi sebuah objek. Contoh: oss://test-bucket/test-object/test.docx.

Catatan

Parameter <bucket> menentukan nama bucket OSS yang berada di wilayah yang sama dengan proyek IMM. Parameter <object> menentukan jalur lengkap objek, termasuk ekstensi nama file.

Format tidak valid yang umum:

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

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

Template TargetURI

Template TargetURI berisi placeholder yang diganti dengan nilai aktual saat digunakan. Template ini memungkinkan pembuatan dinamis URI. Contoh: oss://{bucket}/{tags.custom}/{dirname}/{barename}.{autoext}.

Untuk informasi lebih lanjut, lihat Template TargetURI.

Otorisasi

Tugas asinkron membaca data input dan menulis data output berdasarkan alamat yang Anda tentukan. Anda perlu memberikan otorisasi kepada IMM untuk membaca data input dan menulis data output, dengan izin yang ditetapkan pada tingkat proyek IMM. Saat memanggil operasi CreateProject untuk membuat proyek, Anda dapat menggunakan parameter ServiceRole untuk menentukan peran layanan yang dapat diasumsikan oleh IMM. Peran defaultnya adalah AliyunIMMDefaultRole, yang dibuat secara otomatis saat Anda mengaktifkan IMM. Saat IMM menjalankan tugas asinkron, IMM akan mengasumsikan peran yang telah ditentukan untuk mendapatkan izin guna mengakses dan mengunggah data.

Mendapatkan status tugas

Mendapatkan status tugas dengan menggunakan MNS atau ApsaraMQ for RocketMQ

Anda dapat menggunakan Message Service (MNS) atau ApsaraMQ for RocketMQ untuk menerima notifikasi tugas IMM. Untuk informasi lebih lanjut, lihat Proses tugas. Untuk detail format notifikasi MNS, lihat Contoh pesan asinkron.

Penting

MNS atau ApsaraMQ for RocketMQ dan IMM harus berada di wilayah yang sama.

  • (Direkomendasikan) Gunakan parameter Notification untuk menentukan konfigurasi MNS atau ApsaraMQ for RocketMQ untuk menerima notifikasi pesan asinkron.

    • MNS: Gunakan bidang MNS dalam parameter Notification untuk menentukan titik akhir MNS dan topik untuk menerima notifikasi pesan asinkron.

      {
        "Notification": {
          "MNS": {
            "Endpoint": "Titik akhir MNS",
            "TopicName": "Topik MNS"
          }
        }
      }
    • ApsaraMQ for RocketMQ: Gunakan bidang RocketMQ dalam parameter Notification untuk menentukan titik akhir ApsaraMQ for RocketMQ, topik, dan instance untuk menerima notifikasi pesan asinkron.

      {
        "Notification": {
          "RocketMQ": {
            "Endpoint": "Titik akhir ApsaraMQ for RocketMQ",
            "TopicName": "Topik ApsaraMQ for RocketMQ",
            "InstanceId": "ID instance ApsaraMQ for RocketMQ"
          }
        }
      }
  • Gunakan parameter NotifyEndpoint dan NotifyTopicName untuk menentukan titik akhir MNS dan topik untuk menerima notifikasi pesan asinkron.

    • NotifyEndpoint: titik akhir untuk menerima notifikasi. Nilai defaultnya adalah titik akhir MNS dari pemanggil.

    • NotifyTopicName: nama topik MNS ke mana notifikasi dikirim. Jika parameter ini tidak ditentukan, tidak ada notifikasi yang dikirim.

Mendapatkan status tugas dengan memanggil operasi GetTask

IMM menyediakan operasi GetTask yang dapat Anda gunakan untuk memeriksa status tugas.

Anda dapat memanggil operasi GetTask berulang kali untuk memantau status tugas hingga selesai. Namun, metode ini tidak efisien. Jika tugas membutuhkan waktu lama untuk selesai, Anda mungkin perlu melakukan banyak panggilan GetTask. Hal ini dapat memicu throttling global dan memengaruhi panggilan API lainnya. Selain itu, latensi rata-rata adalah setengah dari interval pemantauan. Oleh karena itu, kami merekomendasikan agar Anda tidak menggunakan metode ini untuk mendapatkan status tugas di lingkungan produksi.

Catatan

Informasi tugas disimpan selama tujuh hari setelah tugas dimulai. Informasi tugas tidak dapat diperoleh setelah tujuh hari.

Menggunakan tag

Gunakan parameter Tags untuk menentukan tag untuk tugas asinkron saat memanggil operasi API untuk membuat tugas. Parameter ini dapat digunakan dalam skenario berikut:

  • Cari tugas berdasarkan tag.

  • Gunakan tag sebagai variabel dalam TargetURI.