All Products
Search
Document Center

Alibaba Cloud Model Studio:Terima notifikasi penyelesaian tugas melalui callback HTTP atau MQ

Last Updated:May 28, 2026

Alih-alih melakukan polling untuk memperoleh hasil tugas, Anda dapat mengonfigurasi URL callback HTTP atau RocketMQ untuk menerima notifikasi penyelesaian tugas dari EventBridge. Setelah menerima notifikasi tersebut, lakukan kueri terhadap API hasil satu kali guna mendapatkan output tugas.

Latar Belakang

Alibaba Cloud Model Studio terintegrasi dengan EventBridge untuk mengirimkan event penyelesaian tugas ke target event yang telah Anda konfigurasikan.

Ketika tugas asinkron selesai (berhasil atau gagal), sebuah event penyelesaian tugas yang berisi status dan ID tugas dilaporkan ke EventBridge, yang kemudian meneruskannya ke target Anda. Untuk informasi lebih lanjut mengenai jenis target event lainnya, lihat Target event dan Jenis layanan target.

Polling vs. notifikasi berbasis event

Dimensi perbandingan

Polling

Berdasarkan event

Pembatasan laju

API hasil memiliki pembatasan laju (20 QPS)

Tidak ada pembatasan laju

Kompleksitas integrasi

Sederhana—lakukan polling terhadap API hasil. Beberapa tugas (seperti teks-ke-gambar dan teks-ke-video) menyediakan SDK dengan polling bawaan.

Konfigurasikan callback HTTP atau RocketMQ di EventBridge dan urai notifikasinya.

Konsumsi sumber daya server

Mengonsumsi sumber daya server karena kueri yang sering.

Tidak ada konsumsi sumber daya—EventBridge mendorong ke Anda.

Latensi

Tergantung pada interval polling.

Hampir real-time—didorong segera setelah selesai.

Rekomendasi

Skema konkurensi rendah atau toleran terhadap latensi.

Skema konkurensi tinggi atau sensitif terhadap latensi.

Konfigurasikan salah satu target event berikut di EventBridge:

Opsi 1: Konfigurasikan URL callback HTTP

Ikhtisar

Setelah Alibaba Cloud Model Studio menyelesaikan tugas, sistem melaporkan event penyelesaian tugas ke EventBridge. EventBridge kemudian mendorong event tersebut ke titik akhir callback Anda. Titik akhir callback Anda mengurai event tersebut untuk mengekstrak ID tugas yang berhasil diproses dan memanggil API kueri hasil satu kali guna mengambil output tugas.

Manfaat: Dibandingkan dengan polling langsung, pendekatan ini menghindari permintaan polling yang tidak perlu, mengurangi konsumsi sumber daya, serta meringankan tekanan pada batas laju API kueri hasil.

Penagihan: Penagihan EventBridge.

Sebagai contoh, alur pemanggilan asinkron menggunakan URL callback HTTP untuk teks-ke-gambar adalah sebagai berikut:

  • Buat tugas teks-ke-gambar dan terima task_id. Tugas belum selesai.

  • Setelah Alibaba Cloud Model Studio selesai memproses, sistem melaporkan event penyelesaian tugas ke EventBridge.

  • EventBridge secara proaktif mendorong event ke titik akhir callback HTTP.

  • Titik akhir callback mengurai event untuk mendapatkan task_id yang telah selesai.

  • Akhirnya, panggil API kueri hasil untuk mendapatkan URL gambar yang dihasilkan.

image

Prosedur

Langkah 1: Siapkan titik akhir callback HTTP

Umumnya, deploy titik akhir callback HTTP di sistem bisnis Anda untuk menerima notifikasi event asinkron. Titik akhir tersebut harus memenuhi persyaratan berikut:

  • URL permintaan: URL HTTP yang dapat diakses melalui jaringan publik atau Alibaba Cloud VPC.

  • Metode permintaan: POST.

  • Body permintaan: Format JSON yang berisi data event penyelesaian tugas asinkron. Anda dapat melihat struktur event yang tepat di Konsol EventBridge. Contoh:

Klik untuk melihat struktur data event penyelesaian tugas asinkron

{
    "datacontenttype": "application/json;charset=utf-8",
    "aliyunaccountid": "xxxxx",
    "aliyunpublishtime": "2023-10-25T01:45:16.993Z",
    "data": {
        "start_time": "2023-10-25 09:45:09",
        "user_api_unique_key": "apikey:v1:audio:asr:transcription:paraformer-8k-v1",
        "task_status": "SUCCEEDED",
        "contain_result": false,
        "end_time": "2023-10-25 09:45:16",
        "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
        "region": "ap-southeast-1",
        "request_id": "108f38f5-xxxx-xxxx-xxxx-6504db9080b3",
        "api_key_id": "1250"
    },
    "aliyunoriginalaccountid": "xxxxxxxx",
    "specversion": "1.0",
    "aliyuneventbusname": "default",
    "id": "81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9",
    "source": "acs.dashscope",
    "time": "2023-1-25T01:45:16.969Z",
    "aliyunregionid": "ap-southeast-1",
    "type": "dashscope:System:AsyncTaskFinish"
}

Langkah 2: Kueri event di Konsol EventBridge

Konsol EventBridge memungkinkan Anda mengkueri event yang dikirim oleh Alibaba Cloud Model Studio.

  1. Masuk ke akun Alibaba Cloud Anda dan buka Konsol EventBridge. Beralihlah ke wilayah Singapore region. Di panel navigasi sebelah kiri, pilih Event buses dan klik default untuk masuk ke event bus default untuk layanan cloud.

    Alibaba Cloud Model Studio secara default menggunakan event bus default.
  2. Klik Event tracking dan masukkan kondisi kueri untuk menemukan event penyelesaian tugas asinkron dari Alibaba Cloud Model Studio.

    • Sumber event: Cari dan pilih acs.dashscope, yang menunjukkan bahwa event berasal dari DashScope (layanan model dasar Alibaba Cloud Model Studio).

    • Jenis event: Cari dan pilih dashscope:System:AsyncTaskFinish, yang menunjukkan event penyelesaian tugas asinkron.

  3. Klik Details untuk melihat detail lengkap event yang dilaporkan.

    {
        "datacontenttype": "application/json;charset=utf-8",
        "aliyunaccountid": "xxxxx",
        "aliyunpublishtime": "2023-10-25T01:45:16.993Z",
        "data": {
            "start_time": "2023-10-25 09:45:09",
            "user_api_unique_key": "apikey:v1:audio:asr:transcription:paraformer-8k-v1",
            "task_status": "SUCCEEDED",
            "contain_result": false,
            "end_time": "2023-10-25 09:45:16",
            "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
            "region": "ap-southeast-1",
            "request_id": "108f38f5-xxxx-xxxx-xxxx-6504db9080b3",
            "api_key_id": "1250"
        },
        "aliyunoriginalaccountid": "xxxxxxxx",
        "specversion": "1.0",
        "aliyuneventbusname": "default",
        "id": "81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9",
        "source": "acs.dashscope",
        "time": "2023-1-25T01:45:16.969Z",
        "aliyunregionid": "ap-southeast-1",
        "type": "dashscope:System:AsyncTaskFinish"
    }

Klik untuk melihat deskripsi parameter

Parameter

Tipe

Deskripsi

Nilai contoh

datacontenttype

String

Format data dari field data. Hanya application/json yang didukung.

application/json;charset=utf-8

aliyunaccountid

String

ID akun Alibaba Cloud.

123456789098****

aliyunpublishtime

String

Waktu saat event diterima.

2020-11-19T21:04:42.179PRC

data

Object

Konten event. Objek JSON yang strukturnya ditentukan oleh layanan asal. CloudEvents dapat mencakup informasi kontekstual yang disediakan oleh produsen event pada saat kejadian, yang dikemas dalam data.

data[].start_time

String

Waktu mulai tugas asinkron.

Format: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:09

data[].end_time

String

Waktu penyelesaian tugas asinkron.

Format: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:16

data[].user_api_unique_key

String

Kunci API unik (lima elemen API model yang digunakan saat mengirimkan tugas). Format:

apikey:version:group:task:function-call:model

  • version: versi

  • group: kelompok

  • task: nama tugas

  • function-call: nama metode

  • model: nama model

apikey:v1:audio:asr:transcription:paraformer-8k-v1

data[].task_status

String

Status tugas

  • PENDING: dalam antrean

  • RUNNING: sedang diproses

  • SUCCEEDED: Pemrosesan berhasil.

  • FAILED: gagal

  • CANCELED: Tugas dibatalkan

  • UNKNOWN: tugas tidak ada atau status tidak diketahui

SUCCEEDED

data[].task_id

String

ID tugas

a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35

data[].region

String

Wilayah tempat tugas dijalankan

ap-southeast-1

data[].request_id

String

ID permintaan

108f38f5-xxxx-xxxx-xxxx-6504db9080b3

data[].api_key_id

String

ID kunci API

1234

aliyunoriginalaccountid

String

ID akun Alibaba Cloud asli

123456789098****

specversion

String

Versi protokol CloudEvents

1.0

aliyuneventbusname

String

Nama event bus yang menerima event

default

id

String

ID event—nilai unik yang mengidentifikasi event.

45ef4dewdwe1-7c35-447a-bd93-fab****

source

String

Sumber event.

Layanan yang menyediakan event, mengidentifikasi apa yang terjadi. Biasanya mencakup jenis sumber event, mekanisme penerbitan, atau proses produksi. Pengirim harus memastikan bahwa kombinasi source+id untuk setiap event bersifat unik.

acs.dashscope

time

String

Waktu saat event dihasilkan.

Jika waktu pasti event tidak diketahui, produsen CloudEvents dapat mengatur time ke nilai lain (misalnya, waktu saat ini), tetapi semua produsen untuk sumber yang sama harus menggunakan nilai yang konsisten.

2020-11-19T21:04:41+08:00

aliyunregionid

String

Wilayah yang menerima event.

ap-southeast-1

type

String

Jenis event.

Menjelaskan jenis event yang terkait dengan sumbernya. Digunakan untuk routing, kueri event, dan penerapan kebijakan. Formatnya ditentukan oleh produsen dan mencakup informasi versi.

dashscope:System:AsyncTaskFinish

Langkah 3: Konfigurasikan aturan pengalihan event

  1. Di panel navigasi sebelah kiri, pilih Event rules dan klik Create rule.

  2. Configure basic information: Masukkan nama aturan dan deskripsi kustom.

  3. Configure event pattern: Tentukan event mana yang akan diteruskan.

    • Event source: Cari dan pilih acs.dashscope, yang menunjukkan bahwa event berasal dari Alibaba Cloud Model Studio.

    • Event type: Cari dan pilih dashscope:System:AsyncTaskFinish, yang menunjukkan event penyelesaian tugas asinkron.

    • Pattern content: Konfigurasikan kondisi filter untuk mencocokkan event tertentu. Gunakan field dari detail event yang dikueri di Langkah 2. Untuk sintaks pola, lihat Pola event. Contoh:

      • Default: Setelah memilih sumber dan jenis event, pola secara default menjadi seperti berikut, meneruskan semua event dashscope:System:AsyncTaskFinish.

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"]
      }
      • Filter berdasarkan field: Teruskan hanya event di mana field user_api_unique_key diakhiri dengan :paraformer-8k-v1—artinya hanya event untuk model paraformer-8k-v1. Jenis event adalah dashscope:System:AsyncTaskFinish.

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"],
        "data": {
          "user_api_unique_key": [
            {"suffix": ":paraformer-8k-v1"}
          ]
        }
      }
  4. Configure event targets: Mendukung berbagai tipe target event, termasuk URL callback HTTP dan antrian pesan RocketMQ. Lihat Langkah 4 untuk detail selengkapnya.

Langkah 4: Atur target event ke titik akhir callback HTTP

  1. Configure event target: Teruskan event ke URL callback HTTP.

    • Jenis layanan: Pilih “HTTP”.

    • URL: Masukkan titik akhir layanan HTTP.

    • Body: Pilih “Complete event”.

    • Jenis jaringan: Pilih berdasarkan titik akhir layanan Anda.

      • HTTP mendukung jaringan publik dan pribadi. Jika Anda memilih jaringan pribadi, konfigurasikan VPC, vSwitch, dan SecurityGroup.

  2. Klik Confirm untuk menyimpan aturan. Jika target event menampilkan gaya HTTP, konfigurasi berhasil.

    Kolom Event target aturan sekarang menampilkan HTTP (1).

Opsi 2: Konfigurasikan RocketMQ

Ikhtisar

Setelah Alibaba Cloud Model Studio menyelesaikan tugas, sistem melaporkan event penyelesaian tugas ke EventBridge. EventBridge meneruskan event tersebut ke Message Queue for RocketMQ. Aplikasi Anda mendengarkan antrian pesan, mengonsumsi pesan, mengekstrak ID tugas yang telah selesai, dan memanggil API kueri hasil satu kali guna mengambil output tugas.

Manfaat: Berbeda dengan pendekatan callback HTTP, RocketMQ menjamin pengiriman pesan dan mendukung pengulangan saat terjadi kegagalan—ideal untuk skenario yang memerlukan keandalan pesan tinggi.

Penagihan: Penagihan EventBridge, Penagihan RocketMQ.

Sebagai contoh, alur pemanggilan asinkron menggunakan RocketMQ untuk teks-ke-gambar adalah sebagai berikut:

  • Buat tugas teks-ke-gambar dan terima task_id. Tugas belum selesai.

  • Setelah Alibaba Cloud Model Studio selesai memproses, sistem melaporkan event penyelesaian tugas ke EventBridge.

  • EventBridge secara proaktif meneruskan event ke antrian RocketMQ yang ditentukan.

  • Aplikasi Anda mendengarkan antrian RocketMQ, mengonsumsi pesan, dan mengekstrak task_id yang telah selesai.

  • Akhirnya, panggil API kueri hasil untuk mendapatkan URL gambar yang dihasilkan.

image

Prosedur

Langkah 1: Siapkan instans RocketMQ (lewati jika Anda sudah memiliki antrian RocketMQ)

Untuk menerima event melalui RocketMQ, pertama-tama siapkan antrian RocketMQ.

  1. Buka Konsol RocketMQ. Di panel navigasi sebelah kiri, pilih Instances dan klik Create Instance.

    Contoh ID instans: rmq-cn-nwy*******.

  2. Buat Topic untuk instans tersebut dan masukkan nama topik kustom.

  3. Buat Group untuk instans tersebut dan masukkan nama kelompok kustom.

Langkah 2: Kueri event di Konsol EventBridge

Konsol EventBridge memungkinkan Anda mengkueri event yang dikirim oleh Alibaba Cloud Model Studio.

  1. Masuk ke akun Alibaba Cloud Anda dan buka Konsol EventBridge. Beralihlah ke wilayah Singapore region. Di panel navigasi sebelah kiri, pilih Event buses dan klik default untuk masuk ke event bus default untuk layanan cloud.

    Alibaba Cloud Model Studio secara default menggunakan event bus default.
  2. Klik Event tracking dan masukkan kondisi kueri untuk menemukan event penyelesaian tugas asinkron dari Alibaba Cloud Model Studio.

    • Sumber event: Cari dan pilih acs.dashscope, yang menunjukkan bahwa event berasal dari DashScope (layanan model dasar Alibaba Cloud Model Studio).

    • Jenis event: Cari dan pilih dashscope:System:AsyncTaskFinish, yang menunjukkan event penyelesaian tugas asinkron.

  3. Klik Details untuk melihat detail lengkap event yang dilaporkan.

    {
        "datacontenttype": "application/json;charset=utf-8",
        "aliyunaccountid": "xxxxx",
        "aliyunpublishtime": "2023-10-25T01:45:16.993Z",
        "data": {
            "start_time": "2023-10-25 09:45:09",
            "user_api_unique_key": "apikey:v1:audio:asr:transcription:paraformer-8k-v1",
            "task_status": "SUCCEEDED",
            "contain_result": false,
            "end_time": "2023-10-25 09:45:16",
            "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
            "region": "ap-southeast-1",
            "request_id": "108f38f5-xxxx-xxxx-xxxx-6504db9080b3",
            "api_key_id": "1250"
        },
        "aliyunoriginalaccountid": "xxxxxxxx",
        "specversion": "1.0",
        "aliyuneventbusname": "default",
        "id": "81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9",
        "source": "acs.dashscope",
        "time": "2023-1-25T01:45:16.969Z",
        "aliyunregionid": "ap-southeast-1",
        "type": "dashscope:System:AsyncTaskFinish"
    }

Klik untuk melihat deskripsi parameter

Parameter

Tipe

Deskripsi

Nilai contoh

datacontenttype

String

Format data dari field data. Hanya application/json yang didukung.

application/json;charset=utf-8

aliyunaccountid

String

ID akun Alibaba Cloud.

123456789098****

aliyunpublishtime

String

Waktu saat event diterima.

2020-11-19T21:04:42.179PRC

data

Object

Konten event. Objek JSON yang strukturnya ditentukan oleh layanan asal. CloudEvents dapat mencakup informasi kontekstual yang disediakan oleh produsen event pada saat kejadian, yang dikemas dalam data.

data[].start_time

String

Waktu mulai tugas asinkron.

Format: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:09

data[].end_time

String

Waktu penyelesaian tugas asinkron.

Format: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:16

data[].user_api_unique_key

String

Kunci API unik (lima elemen API model yang digunakan saat mengirimkan tugas). Format:

apikey:version:group:task:function-call:model

  • version: versi

  • group: kelompok

  • task: nama tugas

  • function-call: nama metode

  • model: nama model

apikey:v1:audio:asr:transcription:paraformer-8k-v1

data[].task_status

String

Status tugas

  • PENDING: dalam antrean

  • RUNNING: sedang diproses

  • SUCCEEDED: Pemrosesan berhasil.

  • FAILED: gagal

  • CANCELED: Tugas dibatalkan

  • UNKNOWN: tugas tidak ada atau status tidak diketahui

SUCCEEDED

data[].task_id

String

ID tugas

a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35

data[].region

String

Wilayah tempat tugas dijalankan

ap-southeast-1

data[].request_id

String

ID permintaan

108f38f5-xxxx-xxxx-xxxx-6504db9080b3

data[].api_key_id

String

ID kunci API

1234

aliyunoriginalaccountid

String

ID akun Alibaba Cloud asli

123456789098****

specversion

String

Versi protokol CloudEvents

1.0

aliyuneventbusname

String

Nama event bus yang menerima event

default

id

String

ID event—nilai unik yang mengidentifikasi event.

45ef4dewdwe1-7c35-447a-bd93-fab****

source

String

Sumber event.

Layanan yang menyediakan event, mengidentifikasi apa yang terjadi. Biasanya mencakup jenis sumber event, mekanisme penerbitan, atau proses produksi. Pengirim harus memastikan bahwa kombinasi source+id untuk setiap event bersifat unik.

acs.dashscope

time

String

Waktu saat event dihasilkan.

Jika waktu pasti event tidak diketahui, produsen CloudEvents dapat mengatur time ke nilai lain (misalnya, waktu saat ini), tetapi semua produsen untuk sumber yang sama harus menggunakan nilai yang konsisten.

2020-11-19T21:04:41+08:00

aliyunregionid

String

Wilayah yang menerima event.

ap-southeast-1

type

String

Jenis event.

Menjelaskan jenis event yang terkait dengan sumbernya. Digunakan untuk routing, kueri event, dan penerapan kebijakan. Formatnya ditentukan oleh produsen dan mencakup informasi versi.

dashscope:System:AsyncTaskFinish

Langkah 3: Konfigurasikan aturan pengalihan event

  1. Di panel navigasi sebelah kiri, pilih Event rules dan klik Create rule.

  2. Configure basic information: Masukkan nama aturan dan deskripsi kustom.

  3. Configure event pattern: Tentukan event mana yang akan diteruskan.

    • Event source: Cari dan pilih acs.dashscope, yang menunjukkan bahwa event berasal dari Alibaba Cloud Model Studio.

    • Event type: Cari dan pilih dashscope:System:AsyncTaskFinish, yang menunjukkan event penyelesaian tugas asinkron.

    • Pattern content: Konfigurasikan kondisi filter untuk mencocokkan event tertentu. Gunakan field dari detail event yang dikueri di Langkah 2. Untuk sintaks pola, lihat Pola event. Contoh:

      • Default: Setelah memilih sumber dan jenis event, pola secara default menjadi seperti berikut, meneruskan semua event dashscope:System:AsyncTaskFinish.

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"]
      }
      • Filter berdasarkan field: Teruskan hanya event di mana field user_api_unique_key diakhiri dengan :paraformer-8k-v1—artinya hanya event untuk model paraformer-8k-v1. Jenis event adalah dashscope:System:AsyncTaskFinish.

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"],
        "data": {
          "user_api_unique_key": [
            {"suffix": ":paraformer-8k-v1"}
          ]
        }
      }
  4. Configure event targets: Mendukung beberapa jenis target event, termasuk URL callback HTTP dan antrian pesan RocketMQ. Lihat Langkah 4 untuk detailnya.

Langkah 4: Atur target event ke RocketMQ

Setelah membuat RocketMQ, buka antarmuka konfigurasi target event dan pilih instans RocketMQ Anda.

  • Jenis layanan: Pilih “Message Queue for RocketMQ”.

  • Versi: Versi RocketMQ yang Anda buat, misalnya RocketMQ 5.x.

  • ID Instans: ID instans RocketMQ Anda. Lihat Langkah 1.

  • Topik: Nama topik yang Anda buat. Lihat Langkah 1.

Langkah 5: Lihat pesan di Konsol RocketMQ

Setelah konfigurasi, kirimkan tugas asinkron. Setelah selesai, lihat pesan di topik RocketMQ yang telah Anda konfigurasikan.

  • Untuk melihat pesan secara online di RocketMQ, aktifkan fitur pengalaman kirim/terima satu klik.

  • Fitur ini menggunakan Function Compute. Jika Anda melebihi kuota percobaan gratis, biaya minimal akan dikenakan. Lihat Aturan penagihan Function Compute.

Di halaman Topics, temukan topik Anda dan klik Details di kolom Actions.

Di halaman detail topik, beralihlah ke tab One-click send/receive experience. Di bagian Basic Features, pilih metode konsumsi, seperti PushConsumer.

Setelah mengonfigurasi parameter seperti Topic Name dan Group ID, klik Run untuk mulai menerima pesan. Tab Run Results menampilkan pesan yang diterima, termasuk ID pesan dan waktu penerimaan.

Langkah 6: Gunakan SDK untuk menerima dan mengonsumsi pesan

Gunakan SDK Java RocketMQ untuk menerapkan logika berikut: berlangganan topik terkait dan implementasikan pendengar pesan. Proses pesan saat diterima.

Contoh berikut menunjukkan kode klien Java untuk RocketMQ 5.0.

  • Dalam proyek Maven, tambahkan dependensi ini:

<dependency>
  <groupId>org.apache.rocketmq</groupId>
  <artifactId>rocketmq-client-java</artifactId>
  <version>5.0.4</version>
</dependency>
  • Kode contoh untuk mengonsumsi pesan MQ:

import com.alibaba.fastjson2.JSON;
import org.apache.rocketmq.client.apis.*;
import org.apache.rocketmq.client.apis.consumer.ConsumeResult;
import org.apache.rocketmq.client.apis.consumer.FilterExpression;
import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;
import org.apache.rocketmq.client.apis.consumer.PushConsumer;
import org.apache.rocketmq.shaded.org.slf4j.Logger;
import org.apache.rocketmq.shaded.org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Collections;

public class ConsumerExample {
    private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerExample.class);

    private ConsumerExample() {
    }

    public static void main(String[] args) throws ClientException, IOException, InterruptedException {
        /*
          Endpoint yang diperoleh dari tab Endpoints di halaman detail instans di konsol.
          Jika mengakses dari Instance ECS Alibaba Cloud melalui jaringan internal, gunakan endpoint VPC.
          Jika mengakses dari jaringan publik lokal atau IDC on-premises, gunakan endpoint publik. Akses endpoint publik memerlukan pengaktifan akses jaringan publik untuk instans.
         */
        String endpoints = "xxxx";
        // Tentukan topik target untuk berlangganan. Topik harus dibuat di konsol terlebih dahulu; jika tidak, terjadi error.
        String topic = "xxxx";
        // Tentukan kelompok konsumen untuk konsumen. Kelompok harus dibuat di konsol terlebih dahulu; jika tidak, terjadi error.
        String consumerGroup = "xxxx";
        final ClientServiceProvider provider = ClientServiceProvider.loadService();
        ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoints);
        /*
          Jika menggunakan endpoint publik, konfigurasikan username dan password instans, tersedia di halaman detail instans di konsol.
          Jika mengakses dari Instance ECS Alibaba Cloud melalui jaringan internal, lewati konfigurasi ini—server secara cerdas mengambil info VPC.
         */
        builder.setCredentialProvider(new StaticSessionCredentialsProvider("xxxx", "xxxx"));
        ClientConfiguration clientConfiguration = builder.build();
        // Aturan filter langganan—berlangganan pesan dengan tag apa pun.
        String tag = "*";
        FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
        // Inisialisasi PushConsumer dengan kelompok konsumen, parameter komunikasi, dan hubungan langganan.
        PushConsumer pushConsumer = provider.newPushConsumerBuilder()
        .setClientConfiguration(clientConfiguration)
        // Atur kelompok konsumen.
        .setConsumerGroup(consumerGroup)
        // Atur hubungan langganan yang telah ditentukan sebelumnya.
        .setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
        // Atur pendengar pesan.
        .setMessageListener(messageView -> {
            try {
                // Proses pesan dan kembalikan hasil konsumsi.
                ByteBuffer buffer = messageView.getBody();
                ByteBuffer newBuffer = ByteBuffer.allocate(buffer.capacity());
                for (int i = 0; i < buffer.capacity(); i++) {
                    newBuffer.put(buffer.get(i));
                }
                String result = new String(newBuffer.array());
                LOGGER.info("Consume message={}", JSON.toJSONString(result));
                System.out.println(result);
                return ConsumeResult.SUCCESS;
            } catch (Exception e) {
                LOGGER.error("deal message has error", e);
                return ConsumeResult.FAILURE;
            }
        })
        .build();
        Thread.sleep(Long.MAX_VALUE);

        // Tutup PushConsumer saat tidak lagi diperlukan.
        pushConsumer.close();
    }
}                                                 

FAQ

Dapatkah satu aturan event memiliki beberapa target event?

Ya. Satu aturan event dapat memiliki beberapa target event. Jika dikonfigurasi, event yang sama akan dikirimkan ke setiap target.

Saya telah mengonfigurasi aturan event tetapi tidak menerima event. Mengapa?

Pastikan wilayah aturan pengalihan event sesuai dengan wilayah event tersebut. Misalnya, aturan yang dikonfigurasi di wilayah Singapura hanya meneruskan event Singapura—bukan wilayah lainnya. Periksa wilayah EventBridge di pemilih wilayah di bagian atas halaman konsol.

Permintaan layanan HTTP/HTTPS timeout atau mengembalikan error?

Ikuti langkah-langkah berikut untuk pemecahan masalah:

  1. Periksa status layanan HTTP/HTTPS.

  2. Verifikasi URL yang dikonfigurasi di target event.

  3. Periksa jenis jaringan yang dikonfigurasi untuk target event:

    • PublicNetwork: Jaringan publik—pastikan URL dapat diakses publik.

    • PrivateNetwork: Jaringan VPC—jika dipilih, verifikasi konfigurasi VPC, vSwitch, dan SecurityGroup.

      • Periksa pengaturan VPC dan vSwitch.

      • Periksa pengaturan grup keamanan jaringan.

  4. Untuk pengaturan parameter lainnya, lihat Parameter target event.