Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Recevoir des notifications de fin de tâche via callback HTTP ou MQ

Dernière mise à jour :Oct 11, 2026

Plutôt que d'interroger régulièrement l'API pour obtenir les résultats, configurez une URL de callback HTTP ou RocketMQ afin de recevoir des notifications de fin de tâche depuis EventBridge. Une fois notifié, appelez l'API de résultat une seule fois pour récupérer la sortie.

Contexte

Alibaba Cloud Model Studio s'intègre à EventBridge pour transmettre les événements de fin de tâche aux cibles d'événements configurées.

Lorsqu'une tâche asynchrone se termine (succès ou échec), un événement de fin de tâche contenant le statut et l'ID de la tâche est signalé à EventBridge, qui le transfère ensuite à votre cible. Pour découvrir d'autres cibles d'événements, consultez Cibles d'événements et Types de services cibles.

Interrogation (polling) contre notifications événementielles

Critère de comparaison

Interrogation (Polling)

Événementiel

Limitation du débit

L'API de résultat est soumise à une limite de débit (20 QPS)

Aucune limitation de débit

Complexité d'intégration

Simple : il suffit d'interroger l'API de résultat. Certaines tâches (comme text-to-image et text-to-video) proposent des SDK intégrant l'interrogation automatique.

Nécessite de configurer un callback HTTP ou RocketMQ dans EventBridge et d'analyser les notifications.

Consommation des ressources serveur

Les requêtes fréquentes consomment des ressources serveur.

Aucune consommation de ressources : EventBridge envoie les données par push.

Latence

Dépend de l'intervalle d'interrogation.

Quasi temps réel : notification immédiate dès la fin de la tâche.

Recommandation

Scénarios à faible concurrence ou tolérants à la latence.

Scénarios à forte concurrence ou sensibles à la latence.

Configurez l'une des cibles d'événements suivantes dans EventBridge :

Option 1 : Configurer une URL de callback HTTP

Présentation

Une fois qu'Alibaba Cloud Model Studio a terminé une tâche, il signale l'événement de fin de tâche à EventBridge. Ce dernier transmet alors l'événement à votre endpoint de callback. Votre endpoint analyse l'événement pour extraire l'ID de la tâche traitée avec succès, puis appelle l'API d'interrogation des résultats une seule fois afin de récupérer la sortie de la tâche.

Avantages : comparée à l'interrogation directe, cette approche évite les requêtes inutiles, réduit la consommation de ressources et diminue la pression sur les limites de débit de l'API de résultats.

Facturation : Facturation d'EventBridge.

Par exemple, le flux d'appel asynchrone utilisant une URL de callback HTTP pour text-to-image se déroule comme suit :

  • Créez une tâche text-to-image et recevez un task_id. La tâche n'est pas encore terminée.
  • Une fois le traitement terminé par Alibaba Cloud Model Studio, l'événement de fin de tâche est signalé à EventBridge.
  • EventBridge envoie proactivement l'événement vers l'endpoint de callback HTTP.
  • L'endpoint de callback analyse l'événement pour obtenir le task_id de la tâche terminée.
  • Enfin, appelez l'API d'interrogation des résultats pour obtenir l'URL de l'image générée.
image

Procédure

Étape 1 : Préparer l'endpoint de callback HTTP

Généralement, déployez l'endpoint de callback HTTP dans votre système métier pour recevoir les notifications d'événements asynchrones. Il doit répondre aux exigences suivantes :

  • URL de requête : une URL HTTP accessible via le réseau public ou un VPC Alibaba Cloud.
  • Méthode de requête : POST.
  • Corps de la requête : format JSON contenant les données de l'événement de fin de tâche asynchrone. Vous pouvez consulter la structure exacte de l'événement dans la console EventBridge. Exemple :

Cliquez pour afficher la structure des données de l'événement de fin de tâche asynchrone

{
    "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-v2",
        "task_status": "SUCCEEDED",
        "contain_result": false,
        "end_time": "2023-10-25 09:45:16",
        "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
        "region": "cn-beijing",
        "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": "cn-beijing",
    "type": "dashscope:System:AsyncTaskFinish"
}
{
    "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-v2",
        "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"
}

Étape 2 : Interroger les événements dans la console EventBridge

La console EventBridge permet d'interroger les événements transmis par Alibaba Cloud Model Studio.

  1. Connectez-vous à votre compte Alibaba Cloud et accédez à la console EventBridge. Basculez vers la Singapore region. Dans le volet de navigation de gauche, sélectionnez Event buses et cliquez sur default pour accéder au bus d'événements par défaut des services cloud.

    Par défaut, Alibaba Cloud Model Studio utilise le bus d'événements par défaut.

  2. Cliquez sur Event tracking et saisissez les critères de recherche pour trouver les événements de fin de tâche asynchrone provenant d'Alibaba Cloud Model Studio.

    • Source de l'événement : recherchez et sélectionnez acs.dashscope, ce qui indique que l'événement provient de DashScope (le service de modèle sous-jacent d'Alibaba Cloud Model Studio).
    • Type d'événement : recherchez et sélectionnez dashscope:System:AsyncTaskFinish, correspondant à un événement de fin de tâche asynchrone.
  3. Cliquez sur Details pour afficher tous les détails de l'événement signalé.

    {
        "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-v2",
            "task_status": "SUCCEEDED",
            "contain_result": false,
            "end_time": "2023-10-25 09:45:16",
            "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
            "region": "cn-beijing",
            "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": "cn-beijing",
        "type": "dashscope:System:AsyncTaskFinish"
    }
    
    {
        "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-v2",
            "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"
    }
    

Cliquez pour afficher la description des paramètres

ParamètreTypeDescriptionValeur d'exemple

datacontenttype

String

Format de données du champ data. Seul application/json est pris en charge.

application/json;charset=utf-8

aliyunaccountid

String

ID du compte Alibaba Cloud.

123456789098****

aliyunpublishtime

String

Heure de réception de l'événement.

2020-11-19T21:04:42.179PRC

data

Object

Contenu de l'événement. Objet JSON dont la structure est définie par le service source. Les CloudEvents peuvent inclure des informations contextuelles fournies par le producteur de l'événement au moment de son occurrence, encapsulées dans data.

data[].start_time

String

Heure de début de la tâche asynchrone.

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

2023-10-25 09:45:09

data[].end_time

String

Heure de fin de la tâche asynchrone.

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

2023-10-25 09:45:16

data[].user_api_unique_key

String

Clé API unique (les cinq éléments de l'API du modèle utilisés lors de la soumission de la tâche). Format :

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

  • version : version
  • group : groupe
  • task : nom de la tâche
  • function-call : nom de la méthode
  • model : nom du modèle

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

data[].task_status

String

Statut de la tâche

  • PENDING : en file d'attente
  • RUNNING : en cours de traitement
  • SUCCEEDED : traitement réussi.
  • FAILED : échec
  • CANCELED : tâche annulée
  • UNKNOWN : la tâche n'existe pas ou son statut est inconnu

SUCCEEDED

data[].task_id

String

ID de la tâche

a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35

data[].region

String

Région où la tâche s'exécute

ap-southeast-1

data[].request_id

String

ID de la requête

108f38f5-xxxx-xxxx-xxxx-6504db9080b3

data[].api_key_id

String

ID de la clé API

1234

data[].contain_result

Boolean

Indique si l'événement contient les détails du résultat.

  • true : contient les détails du résultat.
  • false : ne contient pas les détails du résultat.

true

data[].output_result

JSON

Détails du résultat. Renvoyé lorsque contain_result est true.

{"request_id": "6abe5b9b-f95c-9a23-8bed-0a04c2158b5c", "output": {"task_id": "84d0e919-5eda-40a1-a6e9-a94033840693", "task_status": "SUCCEEDED", "submit_time": "2026-05-20 15:38:19.940", "scheduled_time": "2026-05-20 15:38:19.995", "end_time": "2026-05-20 15:38:25.186", "text": "This is a simulated text generation result."}, "usage": {"output_tokens": 100, "input_tokens": 21}}

aliyunoriginalaccountid

String

ID du compte Alibaba Cloud d'origine

123456789098****

specversion

String

Version du protocole CloudEvents

1.0

aliyuneventbusname

String

Nom du bus d'événements recevant l'événement

default

id

String

ID de l'événement — valeur unique identifiant l'événement.

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

source

String

Source de l'événement.

Service fournissant l'événement, identifiant ce qui s'est produit. Inclut généralement le type de source de l'événement, le mécanisme de publication ou le processus de production. L'expéditeur doit garantir que la combinaison source+id de chaque événement est unique.

acs.dashscope

time

String

Heure de génération de l'événement.

Si l'heure exacte de l'événement est inconnue, les producteurs CloudEvents peuvent définir time sur une autre valeur (par exemple, l'heure actuelle), mais tous les producteurs pour la même source doivent utiliser des valeurs cohérentes.

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

aliyunregionid

String

Région recevant l'événement.

ap-southeast-1

type

String

Type d'événement.

Décrit le type d'événement lié à la source. Utilisé pour le routage, les requêtes d'événements et l'application des politiques. Le format est défini par le producteur et inclut des informations de version.

dashscope:System:AsyncTaskFinish

Étape 3 : Configurer les règles de transfert d'événements

  1. Dans le volet de navigation de gauche, sélectionnez Event rules et cliquez sur Create rule.

  2. Configure basic information : saisissez un nom et une description personnalisés pour la règle.

  3. Configure event pattern : spécifiez les événements à transférer.

    • Event source : recherchez et sélectionnez acs.dashscope, indiquant que l'événement provient d'Alibaba Cloud Model Studio.

    • Event type : recherchez et sélectionnez dashscope:System:AsyncTaskFinish, correspondant à un événement de fin de tâche asynchrone.

    • Pattern content : configurez les conditions de filtrage pour cibler des événements spécifiques. Utilisez les champs issus des détails d'événements interrogés à l'étape 2. Pour la syntaxe des modèles, consultez Modèles d'événements. Exemples :

      • Par défaut : après avoir sélectionné la source et le type d'événement, le modèle prend par défaut la forme suivante, transférant ainsi tous les événements dashscope:System:AsyncTaskFinish.
      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"]
      }
      
      • Filtrage par champ : transférez uniquement les événements dont le champ user_api_unique_key se termine par :paraformer-8k-v2, c'est-à-dire uniquement les événements concernant le modèle paraformer-8k-v2. Le type d'événement est dashscope:System:AsyncTaskFinish.
      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"],
        "data": {
          "user_api_unique_key": [
            {"suffix": ":paraformer-8k-v2"}
          ]
        }
      }
      
  4. Configure event targets : prend en charge plusieurs types de cibles d'événements, notamment les URL de callback HTTP et les files d'attente de messages RocketMQ. Consultez l'étape 4 pour plus de détails.

Étape 4 : Définir la cible d'événement sur un endpoint de callback HTTP

  1. Configure event target : transférez les événements vers une URL de callback HTTP.

    • Type de service : sélectionnez « HTTP ».

    • URL : saisissez l'endpoint du service HTTP.

    • Body : sélectionnez « Complete event ».

    • Type de réseau : choisissez selon votre endpoint de service.

      • HTTP prend en charge les réseaux publics et privés. Si vous sélectionnez un réseau privé, configurez le VPC, le vSwitch et le SecurityGroup.
  2. Cliquez sur Confirm pour enregistrer la règle. Si la cible d'événement affiche un style HTTP, la configuration a réussi.

    La colonne Event target de la règle affiche désormais HTTP (1).

Option 2 : Configurer RocketMQ

Présentation

Une fois qu'Alibaba Cloud Model Studio a terminé une tâche, il signale l'événement de fin de tâche à EventBridge. Ce dernier transfère l'événement vers Message Queue for RocketMQ. Votre application écoute la file d'attente de messages, consomme le message, extrait l'ID de la tâche terminée, puis appelle l'API d'interrogation des résultats une seule fois afin de récupérer la sortie de la tâche.

Avantages : contrairement à l'approche par callback HTTP, RocketMQ garantit la livraison des messages et prend en charge les nouvelles tentatives en cas d'échec, ce qui est idéal pour les scénarios exigeant une grande fiabilité des messages.

Facturation : Facturation d'EventBridge, Facturation de RocketMQ.

Par exemple, le flux d'appel asynchrone utilisant RocketMQ pour text-to-image se déroule comme suit :

  • Créez une tâche text-to-image et recevez un task_id. La tâche n'est pas encore terminée.
  • Une fois le traitement terminé par Alibaba Cloud Model Studio, l'événement de fin de tâche est signalé à EventBridge.
  • EventBridge transfère proactivement l'événement vers la file d'attente RocketMQ spécifiée.
  • Votre application écoute la file d'attente RocketMQ, consomme le message et extrait le task_id de la tâche terminée.
  • Enfin, appelez l'API d'interrogation des résultats pour obtenir l'URL de l'image générée.
image

Procédure

Étape 1 : Préparer une instance RocketMQ (ignorez cette étape si vous possédez déjà une file d'attente RocketMQ)

Pour recevoir des événements via RocketMQ, préparez d'abord une file d'attente RocketMQ.

  1. Accédez à la console RocketMQ. Dans le volet de navigation de gauche, sélectionnez Instances et cliquez sur Create Instance.

    Exemple d'ID d'instance : rmq-cn-nwy*******.

  2. Créez un Topic pour l'instance et saisissez un nom de topic personnalisé.

  3. Créez un Group pour l'instance et saisissez un nom de groupe personnalisé.

Étape 2 : Interroger les événements dans la console EventBridge

La console EventBridge permet d'interroger les événements transmis par Alibaba Cloud Model Studio.

  1. Connectez-vous à votre compte Alibaba Cloud et accédez à la console EventBridge. Basculez vers la Singapore region. Dans le volet de navigation de gauche, sélectionnez Event buses et cliquez sur default pour accéder au bus d'événements par défaut des services cloud.

    Par défaut, Alibaba Cloud Model Studio utilise le bus d'événements par défaut.

  2. Cliquez sur Event tracking et saisissez les critères de recherche pour trouver les événements de fin de tâche asynchrone provenant d'Alibaba Cloud Model Studio.

    • Source de l'événement : recherchez et sélectionnez acs.dashscope, ce qui indique que l'événement provient de DashScope (le service de modèle sous-jacent d'Alibaba Cloud Model Studio).
    • Type d'événement : recherchez et sélectionnez dashscope:System:AsyncTaskFinish, correspondant à un événement de fin de tâche asynchrone.
  3. Cliquez sur Details pour afficher tous les détails de l'événement signalé.

    {
        "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-v2",
            "task_status": "SUCCEEDED",
            "contain_result": false,
            "end_time": "2023-10-25 09:45:16",
            "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
            "region": "cn-beijing",
            "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": "cn-beijing",
        "type": "dashscope:System:AsyncTaskFinish"
    }
    
    {
        "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-v2",
            "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"
    }
    

Cliquez pour afficher la description des paramètres

ParamètreTypeDescriptionValeur d'exemple

datacontenttype

String

Format de données du champ data. Seul application/json est pris en charge.

application/json;charset=utf-8

aliyunaccountid

String

ID du compte Alibaba Cloud.

123456789098****

aliyunpublishtime

String

Heure de réception de l'événement.

2020-11-19T21:04:42.179PRC

data

Object

Contenu de l'événement. Objet JSON dont la structure est définie par le service source. Les CloudEvents peuvent inclure des informations contextuelles fournies par le producteur de l'événement au moment de son occurrence, encapsulées dans data.

data[].start_time

String

Heure de début de la tâche asynchrone.

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

2023-10-25 09:45:09

data[].end_time

String

Heure de fin de la tâche asynchrone.

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

2023-10-25 09:45:16

data[].user_api_unique_key

String

Clé API unique (les cinq éléments de l'API du modèle utilisés lors de la soumission de la tâche). Format :

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

  • version : version
  • group : groupe
  • task : nom de la tâche
  • function-call : nom de la méthode
  • model : nom du modèle

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

data[].task_status

String

Statut de la tâche

  • PENDING : en file d'attente
  • RUNNING : en cours de traitement
  • SUCCEEDED : traitement réussi.
  • FAILED : échec
  • CANCELED : tâche annulée
  • UNKNOWN : la tâche n'existe pas ou son statut est inconnu

SUCCEEDED

data[].task_id

String

ID de la tâche

a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35

data[].region

String

Région où la tâche s'exécute

ap-southeast-1

data[].request_id

String

ID de la requête

108f38f5-xxxx-xxxx-xxxx-6504db9080b3

data[].api_key_id

String

ID de la clé API

1234

data[].contain_result

Boolean

Indique si l'événement contient les détails du résultat.

  • true : contient les détails du résultat.
  • false : ne contient pas les détails du résultat.

true

data[].output_result

JSON

Détails du résultat. Renvoyé lorsque contain_result est true.

{"request_id": "6abe5b9b-f95c-9a23-8bed-0a04c2158b5c", "output": {"task_id": "84d0e919-5eda-40a1-a6e9-a94033840693", "task_status": "SUCCEEDED", "submit_time": "2026-05-20 15:38:19.940", "scheduled_time": "2026-05-20 15:38:19.995", "end_time": "2026-05-20 15:38:25.186", "text": "This is a simulated text generation result."}, "usage": {"output_tokens": 100, "input_tokens": 21}}

aliyunoriginalaccountid

String

ID du compte Alibaba Cloud d'origine

123456789098****

specversion

String

Version du protocole CloudEvents

1.0

aliyuneventbusname

String

Nom du bus d'événements recevant l'événement

default

id

String

ID de l'événement — valeur unique identifiant l'événement.

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

source

String

Source de l'événement.

Service fournissant l'événement, identifiant ce qui s'est produit. Inclut généralement le type de source de l'événement, le mécanisme de publication ou le processus de production. L'expéditeur doit garantir que la combinaison source+id de chaque événement est unique.

acs.dashscope

time

String

Heure de génération de l'événement.

Si l'heure exacte de l'événement est inconnue, les producteurs CloudEvents peuvent définir time sur une autre valeur (par exemple, l'heure actuelle), mais tous les producteurs pour la même source doivent utiliser des valeurs cohérentes.

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

aliyunregionid

String

Région recevant l'événement.

ap-southeast-1

type

String

Type d'événement.

Décrit le type d'événement lié à la source. Utilisé pour le routage, les requêtes d'événements et l'application des politiques. Le format est défini par le producteur et inclut des informations de version.

dashscope:System:AsyncTaskFinish

Étape 3 : Configurer les règles de transfert d'événements

  1. Dans le volet de navigation de gauche, sélectionnez Event rules et cliquez sur Create rule.

  2. Configure basic information : saisissez un nom et une description personnalisés pour la règle.

  3. Configure event pattern : spécifiez les événements à transférer.

    • Event source : recherchez et sélectionnez acs.dashscope, indiquant que l'événement provient d'Alibaba Cloud Model Studio.

    • Event type : recherchez et sélectionnez dashscope:System:AsyncTaskFinish, correspondant à un événement de fin de tâche asynchrone.

    • Pattern content : configurez les conditions de filtrage pour cibler des événements spécifiques. Utilisez les champs issus des détails d'événements interrogés à l'étape 2. Pour la syntaxe des modèles, consultez Modèles d'événements. Exemples :

      • Par défaut : après avoir sélectionné la source et le type d'événement, le modèle prend par défaut la forme suivante, transférant ainsi tous les événements dashscope:System:AsyncTaskFinish.
      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"]
      }
      
      • Filtrage par champ : transférez uniquement les événements dont le champ user_api_unique_key se termine par :paraformer-8k-v2, c'est-à-dire uniquement les événements concernant le modèle paraformer-8k-v2. Le type d'événement est dashscope:System:AsyncTaskFinish.
      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"],
        "data": {
          "user_api_unique_key": [
            {"suffix": ":paraformer-8k-v2"}
          ]
        }
      }
      
  4. Configure event targets : prend en charge plusieurs types de cibles d'événements, notamment les URL de callback HTTP et les files d'attente de messages RocketMQ. Consultez l'étape 4 pour plus de détails.

Étape 4 : Définir la cible d'événement sur RocketMQ

Après avoir créé RocketMQ, ouvrez l'interface de configuration de la cible d'événement et sélectionnez votre instance RocketMQ.

  • Type de service : sélectionnez « Message Queue for RocketMQ ».
  • Version : la version RocketMQ que vous avez créée, par exemple RocketMQ 5.x.
  • Instance ID : l'ID de votre instance RocketMQ. Consultez l'Étape 1.
  • Topic : le nom du topic que vous avez créé. Consultez l'Étape 1.

Étape 5 : Afficher les messages dans la console RocketMQ

Après la configuration, soumettez une tâche asynchrone. Une fois celle-ci terminée, consultez le message dans le topic RocketMQ configuré.

  • Pour afficher les messages en ligne dans RocketMQ, activez la fonctionnalité d'expérience d'envoi/réception en un clic.
  • Cette fonctionnalité utilise Function Compute. Si vous dépassez le quota d'essai gratuit, des frais minimes s'appliquent. Consultez les Règles de facturation de Function Compute.

Sur la page Topics, localisez votre topic et cliquez sur Details dans la colonne Actions.

Sur la page de détails du topic, basculez vers l'onglet One-click send/receive experience. Dans la section Basic Features, sélectionnez une méthode de consommation, telle que PushConsumer.

Après avoir configuré des paramètres tels que Topic Name et Group ID, cliquez sur Run pour commencer à recevoir des messages. L'onglet Run Results affiche les messages reçus, y compris l'ID du message et l'heure de réception.

Étape 6 : Utiliser le SDK pour recevoir et consommer des messages

Utilisez le SDK Java RocketMQ pour mettre en œuvre la logique suivante : abonnez-vous au topic concerné et implémentez un écouteur de messages. Traitez le message dès sa réception.

L'exemple suivant présente le code client Java pour RocketMQ 5.0.

  • Dans un projet Maven, ajoutez cette dépendance :
<dependency>
  <groupId>org.apache.rocketmq</groupId>
  <artifactId>rocketmq-client-java</artifactId>
  <version>5.0.4</version>
</dependency>
  • Exemple de code pour consommer des messages 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 obtained from the Endpoints tab on the instance details page in the console.
          If accessing from an Alibaba Cloud ECS instance over the internal network, use the VPC endpoint.
          If accessing from a local public network or on-premises IDC, use the public endpoint. Public endpoint access requires enabling public network access for the instance.
         */
        String endpoints = "xxxx";
        // Specify the target topic to subscribe to. The topic must be created in the console beforehand; otherwise, an error occurs.
        String topic = "xxxx";
        // Specify the consumer group for the consumer. The group must be created in the console beforehand; otherwise, an error occurs.
        String consumerGroup = "xxxx";
        final ClientServiceProvider provider = ClientServiceProvider.loadService();
        ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoints);
        /*
          If using a public endpoint, configure the instance username and password, available on the instance details page in the console.
          If accessing from an Alibaba Cloud ECS instance over the internal network, skip this configuration—the server intelligently retrieves VPC info.
         */
        builder.setCredentialProvider(new StaticSessionCredentialsProvider("xxxx", "xxxx"));
        ClientConfiguration clientConfiguration = builder.build();
        // Subscription filter rule—subscribe to messages with any tag.
        String tag = "*";
        FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
        // Initialize PushConsumer with consumer group, communication parameters, and subscription relationship.
        PushConsumer pushConsumer = provider.newPushConsumerBuilder()
        .setClientConfiguration(clientConfiguration)
        // Set consumer group.
        .setConsumerGroup(consumerGroup)
        // Set pre-bound subscription relationships.
        .setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
        // Set message listener.
        .setMessageListener(messageView -> {
            try {
                // Process message and return consumption result.
                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);

        // Close PushConsumer when no longer needed.
        pushConsumer.close();
    }
}

FAQ

Une règle d'événement peut-elle avoir plusieurs cibles d'événements ?

Oui. Une seule règle d'événement peut comporter plusieurs cibles d'événements. Si cela est configuré, le même événement est transmis à chaque cible.

J'ai configuré une règle d'événement mais je ne reçois aucun événement. Pourquoi ?

Assurez-vous que la région de la règle de transfert d'événements correspond à la région de l'événement. Par exemple, une règle configurée dans la région Singapour ne transfère que les événements de Singapour, et non ceux d'autres régions. Vérifiez la région EventBridge dans le sélecteur de région situé en haut de la page de la console.

La requête de service HTTP/HTTPS expire ou renvoie une erreur ?

Suivez ces étapes pour résoudre le problème :

  1. Vérifiez l'état du service HTTP/HTTPS.

  2. Vérifiez l'URL configurée dans la cible d'événement.

  3. Vérifiez le type de réseau configuré pour la cible d'événement :

    • PublicNetwork : réseau public — assurez-vous que l'URL est accessible publiquement.

    • PrivateNetwork : réseau VPC — si cette option est sélectionnée, vérifiez les configurations du VPC, du vSwitch et du SecurityGroup.

      • Vérifiez les paramètres du VPC et du vSwitch.
      • Vérifiez les paramètres du groupe de sécurité réseau.
  4. Pour les autres paramètres, consultez Paramètres de la cible d'événement.