En lugar de sondear los resultados de las tareas, puede configurar una URL de callback HTTP o RocketMQ para recibir notificaciones de finalización de tareas desde EventBridge. Una vez notificado, consulte la API de resultados una vez para obtener la salida.
Antecedentes
Alibaba Cloud Model Studio se integra con EventBridge para entregar eventos de finalización de tareas a sus destinos de evento configurados.
Cuando finaliza una tarea asíncrona (éxito o fallo), se reporta un evento de finalización de tarea que contiene el estado y el ID de la tarea a EventBridge, el cual lo reenvía a su destino. Para más destinos de eventos, consulte Destinos de eventos y Tipos de servicios de destino.
Notificaciones por sondeo frente a notificaciones basadas en eventos
Dimensión de comparación | Sondeo | Impulsado por eventos |
|---|
Limitación de tasa | La API de resultados tiene límite de velocidad (20 QPS) | Sin limitación de tasa |
Complejidad de integración | Simple: sondee la API de resultados. Algunas tareas (como texto a imagen y texto a video) proporcionan SDK con sondeo integrado. | Configure callback HTTP o RocketMQ en EventBridge y analice las notificaciones. |
Consumo de recursos del servidor | Consume recursos del servidor con consultas frecuentes. | Sin consumo de recursos: EventBridge le envía los eventos. |
Latencia | Depende del intervalo de sondeo. | Casi en tiempo real: se envía inmediatamente al finalizar. |
Recomendación | Escenarios de baja concurrencia o tolerantes a la latencia. | Escenarios de alta concurrencia o sensibles a la latencia. |
Configure uno de los siguientes destinos de evento en EventBridge:
Opción 1: Configurar una URL de callback HTTP
Visión general
Una vez que Alibaba Cloud Model Studio completa una tarea, reporta el evento de finalización de tarea a EventBridge. EventBridge luego envía este evento a su endpoint de callback. Su endpoint de callback analiza el evento para extraer el ID de la tarea procesada exitosamente y llama a la API de consulta de resultados una vez para recuperar la salida de la tarea.
Beneficios: En comparación con el sondeo directo, este enfoque evita solicitudes de sondeo innecesarias, reduce el consumo de recursos y disminuye la presión sobre los límites de velocidad de la API de consulta de resultados.
Facturación: Facturación de EventBridge.
Por ejemplo, el flujo de invocación asíncrona usando una URL de callback HTTP para texto a imagen es el siguiente: Cree una tarea de texto a imagen y reciba un task_id. La tarea aún no ha finalizado. Después de que Alibaba Cloud Model Studio finaliza el procesamiento, reporta el evento de finalización de tarea a EventBridge. EventBridge envía proactivamente el evento al endpoint de callback HTTP. El endpoint de callback analiza el evento para obtener el task_id completado. Finalmente, llame a la API de consulta de resultados para obtener la URL de la imagen generada.
| 
|
Procedimiento
Paso 1: Preparar el endpoint de callback HTTP
Normalmente, implemente el endpoint de callback HTTP en su sistema empresarial para recibir notificaciones de eventos asíncronos. Debe cumplir estos requisitos:
- URL de solicitud: Una URL HTTP accesible a través de la red pública o una VPC de Alibaba Cloud.
- Método de solicitud:
POST.
- Cuerpo de la solicitud: formato
JSON que contiene los datos del evento de finalización de tarea asíncrona. Puede ver la estructura exacta del evento en la consola de EventBridge. Ejemplo:
Haga clic para ver la estructura de datos del evento de finalización de tarea asíncrona
{
"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"
}
Paso 2: Consultar eventos en la consola de EventBridge
La consola de EventBridge le permite consultar eventos entregados por Alibaba Cloud Model Studio.
-
Inicie sesión en su cuenta de Alibaba Cloud y vaya a la consola de EventBridge. Cambie a la región de Singapore. En el panel de navegación izquierdo, seleccione Event buses y haga clic en default para ingresar al bus de eventos predeterminado para servicios en la nube.
Alibaba Cloud Model Studio utiliza el bus de eventos predeterminado por defecto.
-
Haga clic en Event tracking e introduzca condiciones de consulta para encontrar eventos de finalización de tareas asíncronas de Alibaba Cloud Model Studio.
- Origen del evento: Busque y seleccione
acs.dashscope, lo que indica que el evento se origina en DashScope (el servicio de modelos subyacente de Alibaba Cloud Model Studio).
- Tipo de evento: Busque y seleccione
dashscope:System:AsyncTaskFinish, lo que indica un evento de finalización de tarea asíncrona.
-
Haga clic en Details para ver todos los detalles del evento reportado.
{
"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"
}
Haga clic para ver las descripciones de los parámetros
Parámetro | Tipo | Descripción | Valor de ejemplo |
|---|
datacontenttype | String | Formato de datos del campo data. Solo se admite application/json. | application/json;charset=utf-8
|
aliyunaccountid | String | ID de cuenta de Alibaba Cloud. | 123456789098**** |
aliyunpublishtime | String | Hora en que se recibió el evento. | 2020-11-19T21:04:42.179PRC |
data | Object | Contenido del evento. Un objeto JSON cuya estructura es definida por el servicio de origen. CloudEvents puede incluir información contextual proporcionada por el productor del evento en el momento de la ocurrencia, encapsulada dentro de data. | |
data[].start_time | String | Hora de inicio de la tarea asíncrona. Formato: yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:09 |
data[].end_time | String | Hora de finalización de la tarea asíncrona. Formato: yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:16 |
data[].user_api_unique_key | String | Clave única de API (los cinco elementos de la API del modelo utilizados al enviar la tarea). Formato: apikey:version:group:task:function-call:model | apikey:v1:audio:asr:transcription:paraformer-8k-v2
|
data[].task_status | String | Estado de la tarea PENDING: en cola RUNNING: procesando SUCCEEDED: Procesamiento exitoso. FAILED: fallido CANCELED: Tarea cancelada UNKNOWN: la tarea no existe o se desconoce su estado
| SUCCEEDED |
data[].task_id | String | ID de tarea | a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35 |
data[].region | String | Región donde se ejecuta la tarea | ap-southeast-1 |
data[].request_id | String | ID de solicitud | 108f38f5-xxxx-xxxx-xxxx-6504db9080b3 |
data[].api_key_id | String | ID de clave de API | 1234 |
data[].contain_result | Boolean | Indica si el evento contiene detalles del resultado. | true |
data[].output_result | JSON | Detalles del resultado. Se devuelve cuando contain_result es 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 de cuenta original de Alibaba Cloud | 123456789098**** |
specversion | String | Versión del protocolo CloudEvents | 1.0 |
aliyuneventbusname | String | Nombre del bus de eventos que recibe el evento | default |
id | String | ID de evento: un valor único que identifica el evento. | 45ef4dewdwe1-7c35-447a-bd93-fab**** |
source | String | Origen del evento. El servicio que proporciona el evento, identificando lo que ocurrió. Normalmente incluye el tipo de origen del evento, el mecanismo de publicación o el proceso de producción. El remitente debe garantizar que la combinación source+id de cada evento sea única. | acs.dashscope |
time | String | Hora en que se generó el evento. Si se desconoce la hora exacta del evento, los productores de CloudEvents pueden establecer time en otro valor (por ejemplo, la hora actual), pero todos los productores para el mismo origen deben usar valores consistentes. | 2020-11-19T21:04:41+08:00 |
aliyunregionid | String | Región que recibe el evento. | ap-southeast-1 |
type | String | Tipo de evento. Describe el tipo de evento relacionado con el origen. Se utiliza para enrutamiento, consultas de eventos y aplicación de políticas. El formato es definido por el productor e incluye información de versión. | dashscope:System:AsyncTaskFinish |
Paso 3: Configurar reglas de reenvío de eventos
-
En el panel de navegación izquierdo, seleccione Event rules y haga clic en Create rule.
-
Configurar información básica: Introduzca un nombre y una descripción personalizados para la regla.
-
Configurar patrón de eventos: Especifique qué eventos reenviar.
-
Origen del evento: Busque y seleccione acs.dashscope, lo que indica que el evento se origina en Alibaba Cloud Model Studio.
-
Tipo de evento: Busque y seleccione dashscope:System:AsyncTaskFinish, lo que indica un evento de finalización de tarea asíncrona.
-
Contenido del patrón: Configure condiciones de filtro para coincidir con eventos específicos. Utilice los campos de los detalles del evento consultados en el Paso 2. Para la sintaxis de patrones, consulte Patrones de eventos. Ejemplos:
- Predeterminado: Después de seleccionar el origen y el tipo de evento, el patrón toma el siguiente valor predeterminado, reenviando todos los eventos
dashscope:System:AsyncTaskFinish.
{
"source": ["acs.dashscope"],
"type": ["dashscope:System:AsyncTaskFinish"]
}
- Filtrar por campo: Reenviar solo eventos donde el campo
user_api_unique_key termine con :paraformer-8k-v2, es decir, solo eventos para el modelo paraformer-8k-v2. El tipo de evento es dashscope:System:AsyncTaskFinish.
{
"source": ["acs.dashscope"],
"type": ["dashscope:System:AsyncTaskFinish"],
"data": {
"user_api_unique_key": [
{"suffix": ":paraformer-8k-v2"}
]
}
}
- Configurar destinos de eventos: Admite múltiples tipos de destino de evento, incluidas URLs de callback HTTP y colas de mensajes RocketMQ. Consulte el Paso 4 para más detalles.
Paso 4: Establecer el destino del evento en un endpoint de callback HTTP
-
Configurar destino del evento: Reenviar eventos a una URL de callback HTTP.
-
Tipo de servicio: Seleccione “HTTP”.
-
URL: Introduzca el endpoint del servicio HTTP.
-
Cuerpo: Seleccione “Complete event”.
-
Tipo de red: Elija según su endpoint de servicio.
- HTTP admite redes públicas y privadas. Si selecciona red privada, configure VPC, vSwitch y SecurityGroup.
-
Haga clic en Confirm para guardar la regla. Si el destino del evento muestra un estilo HTTP, la configuración fue exitosa.
La columna Destino del evento de la regla ahora muestra HTTP (1).
Opción 2: Configurar RocketMQ
Visión general
Una vez que Alibaba Cloud Model Studio completa una tarea, reporta el evento de finalización de tarea a EventBridge. EventBridge reenvía el evento a Message Queue for RocketMQ. Su aplicación escucha la cola de mensajes, consume el mensaje, extrae el ID de la tarea completada y llama a la API de consulta de resultados una vez para recuperar la salida de la tarea.
Beneficios: A diferencia del enfoque de callback HTTP, RocketMQ garantiza la entrega de mensajes y admite reintentos en caso de fallo, ideal para escenarios que requieren alta fiabilidad de mensajes.
Facturación: Facturación de EventBridge, Facturación de RocketMQ.
Por ejemplo, el flujo de invocación asíncrona usando RocketMQ para texto a imagen es el siguiente: Cree una tarea de texto a imagen y reciba un task_id. La tarea aún no ha finalizado. Después de que Alibaba Cloud Model Studio finaliza el procesamiento, reporta el evento de finalización de tarea a EventBridge. EventBridge reenvía proactivamente el evento a la cola de RocketMQ especificada. Su aplicación escucha la cola de RocketMQ, consume el mensaje y extrae el task_id completado. Finalmente, llame a la API de consulta de resultados para obtener la URL de la imagen generada.
| 
|
Procedimiento
Paso 1: Preparar una instancia de RocketMQ (omita si ya tiene una cola RocketMQ)
Para recibir eventos mediante RocketMQ, primero prepare una cola de RocketMQ.
-
Vaya a la consola de RocketMQ. En el panel de navegación izquierdo, seleccione Instances y haga clic en Create Instance.
Ejemplo de ID de instancia: rmq-cn-nwy*******.
-
Cree un Topic para la instancia e introduzca un nombre de tema personalizado.
-
Cree un Group para la instancia e introduzca un nombre de grupo personalizado.
Paso 2: Consultar eventos en la consola de EventBridge
La consola de EventBridge le permite consultar eventos entregados por Alibaba Cloud Model Studio.
-
Inicie sesión en su cuenta de Alibaba Cloud y vaya a la consola de EventBridge. Cambie a la región de Singapore. En el panel de navegación izquierdo, seleccione Event buses y haga clic en default para ingresar al bus de eventos predeterminado para servicios en la nube.
Alibaba Cloud Model Studio utiliza el bus de eventos predeterminado por defecto.
-
Haga clic en Event tracking e introduzca condiciones de consulta para encontrar eventos de finalización de tareas asíncronas de Alibaba Cloud Model Studio.
- Origen del evento: Busque y seleccione
acs.dashscope, lo que indica que el evento se origina en DashScope (el servicio de modelos subyacente de Alibaba Cloud Model Studio).
- Tipo de evento: Busque y seleccione
dashscope:System:AsyncTaskFinish, lo que indica un evento de finalización de tarea asíncrona.
-
Haga clic en Details para ver todos los detalles del evento reportado.
{
"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"
}
Haga clic para ver las descripciones de los parámetros
Parámetro | Tipo | Descripción | Valor de ejemplo |
|---|
datacontenttype | String | Formato de datos del campo data. Solo se admite application/json. | application/json;charset=utf-8
|
aliyunaccountid | String | ID de cuenta de Alibaba Cloud. | 123456789098**** |
aliyunpublishtime | String | Hora en que se recibió el evento. | 2020-11-19T21:04:42.179PRC |
data | Object | Contenido del evento. Un objeto JSON cuya estructura es definida por el servicio de origen. CloudEvents puede incluir información contextual proporcionada por el productor del evento en el momento de la ocurrencia, encapsulada dentro de data. | |
data[].start_time | String | Hora de inicio de la tarea asíncrona. Formato: yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:09 |
data[].end_time | String | Hora de finalización de la tarea asíncrona. Formato: yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:16 |
data[].user_api_unique_key | String | Clave única de API (los cinco elementos de la API del modelo utilizados al enviar la tarea). Formato: apikey:version:group:task:function-call:model | apikey:v1:audio:asr:transcription:paraformer-8k-v2
|
data[].task_status | String | Estado de la tarea PENDING: en cola RUNNING: procesando SUCCEEDED: Procesamiento exitoso. FAILED: fallido CANCELED: Tarea cancelada UNKNOWN: la tarea no existe o se desconoce su estado
| SUCCEEDED |
data[].task_id | String | ID de tarea | a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35 |
data[].region | String | Región donde se ejecuta la tarea | ap-southeast-1 |
data[].request_id | String | ID de solicitud | 108f38f5-xxxx-xxxx-xxxx-6504db9080b3 |
data[].api_key_id | String | ID de clave de API | 1234 |
data[].contain_result | Boolean | Indica si el evento contiene detalles del resultado. | true |
data[].output_result | JSON | Detalles del resultado. Se devuelve cuando contain_result es 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 de cuenta original de Alibaba Cloud | 123456789098**** |
specversion | String | Versión del protocolo CloudEvents | 1.0 |
aliyuneventbusname | String | Nombre del bus de eventos que recibe el evento | default |
id | String | ID de evento: un valor único que identifica el evento. | 45ef4dewdwe1-7c35-447a-bd93-fab**** |
source | String | Origen del evento. El servicio que proporciona el evento, identificando lo que ocurrió. Normalmente incluye el tipo de origen del evento, el mecanismo de publicación o el proceso de producción. El remitente debe garantizar que la combinación source+id de cada evento sea única. | acs.dashscope |
time | String | Hora en que se generó el evento. Si se desconoce la hora exacta del evento, los productores de CloudEvents pueden establecer time en otro valor (por ejemplo, la hora actual), pero todos los productores para el mismo origen deben usar valores consistentes. | 2020-11-19T21:04:41+08:00 |
aliyunregionid | String | Región que recibe el evento. | ap-southeast-1 |
type | String | Tipo de evento. Describe el tipo de evento relacionado con el origen. Se utiliza para enrutamiento, consultas de eventos y aplicación de políticas. El formato es definido por el productor e incluye información de versión. | dashscope:System:AsyncTaskFinish |
Paso 3: Configurar reglas de reenvío de eventos
-
En el panel de navegación izquierdo, seleccione Event rules y haga clic en Create rule.
-
Configurar información básica: Introduzca un nombre y una descripción personalizados para la regla.
-
Configurar patrón de eventos: Especifique qué eventos reenviar.
-
Origen del evento: Busque y seleccione acs.dashscope, lo que indica que el evento se origina en Alibaba Cloud Model Studio.
-
Tipo de evento: Busque y seleccione dashscope:System:AsyncTaskFinish, lo que indica un evento de finalización de tarea asíncrona.
-
Contenido del patrón: Configure condiciones de filtro para coincidir con eventos específicos. Utilice los campos de los detalles del evento consultados en el Paso 2. Para la sintaxis de patrones, consulte Patrones de eventos. Ejemplos:
- Predeterminado: Después de seleccionar el origen y el tipo de evento, el patrón toma el siguiente valor predeterminado, reenviando todos los eventos
dashscope:System:AsyncTaskFinish.
{
"source": ["acs.dashscope"],
"type": ["dashscope:System:AsyncTaskFinish"]
}
- Filtrar por campo: Reenviar solo eventos donde el campo
user_api_unique_key termine con :paraformer-8k-v2, es decir, solo eventos para el modelo paraformer-8k-v2. El tipo de evento es dashscope:System:AsyncTaskFinish.
{
"source": ["acs.dashscope"],
"type": ["dashscope:System:AsyncTaskFinish"],
"data": {
"user_api_unique_key": [
{"suffix": ":paraformer-8k-v2"}
]
}
}
- Configurar destinos de eventos: Admite múltiples tipos de destino de evento, incluidas URLs de callback HTTP y colas de mensajes RocketMQ. Consulte el Paso 4 para más detalles.
Paso 4: Establecer el destino del evento en RocketMQ
Después de crear RocketMQ, abra la interfaz de configuración del destino del evento y seleccione su instancia de RocketMQ.
- Tipo de servicio: Seleccione “Message Queue for RocketMQ”.
- Versión: La versión de RocketMQ que creó, como RocketMQ 5.x.
- Instance ID: El ID de instancia de su instancia de RocketMQ. Consulte Paso 1.
- Topic: El nombre del tema que creó. Consulte Paso 1.
Paso 5: Ver mensajes en la consola de RocketMQ
Después de la configuración, envíe una tarea asíncrona. Una vez completada, vea el mensaje en su tema de RocketMQ configurado.
En la página Topics, busque su tema y haga clic en Details en la columna Actions.
En la página de detalles del tema, cambie a la pestaña One-click send/receive experience. En la sección Basic Features, seleccione un método de consumo, como PushConsumer.
Después de configurar parámetros como Topic Name y Group ID, haga clic en Run para comenzar a recibir mensajes. La pestaña Run Results muestra los mensajes recibidos, incluido el ID del mensaje y la hora de recepción.
Paso 6: Usar el SDK para recibir y consumir mensajes
Utilice el SDK de Java de RocketMQ para implementar la siguiente lógica: suscribirse al tema relevante e implementar un listener de mensajes. Procese el mensaje al recibirlo.
El siguiente ejemplo muestra código de cliente Java para RocketMQ 5.0.
- En un proyecto Maven, agregue esta dependencia:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>5.0.4</version>
</dependency>
- Código de ejemplo para consumir mensajes de 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
¿Puede una regla de evento tener múltiples destinos de evento?
Sí. Una sola regla de evento puede tener múltiples destinos de evento. Si se configura, el mismo evento se entrega a cada destino.
Configuré una regla de evento pero no recibo eventos. ¿Por qué?
Asegúrese de que la región de la regla de reenvío de eventos coincida con la región del evento. Por ejemplo, una regla configurada en la región de Singapore solo reenvía eventos de Singapore, no de otras regiones. Verifique la región de EventBridge en el selector de región en la parte superior de la página de la consola.
¿La solicitud al servicio HTTP/HTTPS expira o devuelve un error?
Siga estos pasos para solucionar problemas:
-
Verifique el estado del servicio HTTP/HTTPS.
-
Verifique la URL configurada en el destino del evento.
-
Verifique el tipo de red configurado para el destino del evento:
-
PublicNetwork: Red pública; asegúrese de que la URL sea accesible públicamente.
-
PrivateNetwork: Red VPC; si se selecciona, verifique las configuraciones de VPC, vSwitch y SecurityGroup.
- Verifique la configuración de VPC y vSwitch.
- Verifique la configuración del grupo de seguridad de red.
-
Para otras configuraciones de parámetros, consulte Parámetros del destino del evento.