Todos los productos
Search
Centro de documentos

ApsaraMQ for Kafka:Send and receive messages through the default endpoint

Última actualización: Oct 09, 2026

Las instancias de ApsaraMQ for Kafka en una red privada virtual (VPC) exponen un endpoint predeterminado para la comunicación en texto plano. Utilice este endpoint para conectar un cliente Java y enviar o recibir mensajes sin configurar certificados SSL ni credenciales SASL.

Solo los recursos desplegados en la misma VPC que su instancia de ApsaraMQ for Kafka pueden acceder al endpoint predeterminado.

Para el acceso cifrado o con autenticación, utilice el endpoint SSL o el endpoint SASL en su lugar.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Configuración del proyecto de demostración

  1. Descargue el proyecto aliware-kafka-demos desde GitHub y descomprima el paquete.

  2. Abra la carpeta kafka-java-demo en IntelliJ IDEA o en el IDE de su preferencia. El proyecto incluye clases auxiliares como JavaKafkaConfigurer, que carga las propiedades de conexión desde kafka.properties.

Incorporación de dependencias de Java

Compruebe que las siguientes dependencias estén presentes en pom.xml. Si no lo están, agréguelas:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.6</version>
</dependency>
Importante

Haga coincidir la versión de kafka-clients con la versión principal de su instancia de ApsaraMQ for Kafka. Revise la versión principal en la página Instance Details de la consola de ApsaraMQ for Kafka.

Configuración de las propiedades de conexión

Abra kafka.properties en el proyecto de demostración y establezca los siguientes parámetros:

bootstrap.servers=<your-default-endpoint>
topic=<your-topic-name>
group.id=<your-group-id>

Parámetro

Descripción

Dónde encontrarlo

bootstrap.servers

El endpoint predeterminado de su instancia

Sección Endpoint Information en la página Instance Details

topic

El nombre del topic

Página Topics

group.id

El ID del grupo de consumidores

Página Groups

Todos los valores están disponibles en la consola de ApsaraMQ for Kafka.

group.id es obligatorio solo para los consumidores. Los productores no lo necesitan.

Envío de mensajes

Compile y ejecute KafkaProducerDemo.java para conectarse al endpoint predeterminado y enviar mensajes al topic especificado.

El siguiente código de ejemplo envía 100 mensajes:

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.Future;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;

public class KafkaProducerDemo {

    public static void main(String[] args) {
        // Load kafka.properties from the demo project.
        Properties kafkaProperties = JavaKafkaConfigurer.getKafkaProperties();

        Properties props = new Properties();

        // Default endpoint (bootstrap.servers from kafka.properties).
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
                kafkaProperties.getProperty("bootstrap.servers"));

        // Serialize both keys and values as strings.
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");

        // Maximum wait time for a request: 30 seconds.
        props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 30 * 1000);

        // Retry up to 5 times on transient failures, with a 3-second backoff.
        props.put(ProducerConfig.RETRIES_CONFIG, 5);
        props.put(ProducerConfig.RETRY_BACKOFF_MS_CONFIG, 3000);

        // Create a thread-safe producer.
        // One producer per process is sufficient. For higher throughput, use up to five.
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);

        String topic = kafkaProperties.getProperty("topic");

        try {
            List<Future<RecordMetadata>> futures = new ArrayList<>(128);

            for (int i = 0; i < 100; i++) {
                ProducerRecord<String, String> record =
                        new ProducerRecord<>(topic, "message value: " + i);
                futures.add(producer.send(record));
            }

            producer.flush();

            for (Future<RecordMetadata> future : futures) {
                try {
                    RecordMetadata metadata = future.get();
                    System.out.println("Produce ok: " + metadata.toString());
                } catch (Throwable t) {
                    t.printStackTrace();
                }
            }
        } catch (Exception e) {
            // Troubleshoot if messages still fail after retries.
            System.out.println("Failed to send messages.");
            e.printStackTrace();
        }
    }
}

Comprobación de la salida del productor

Tras una ejecución exitosa, la consola imprime una línea Produce ok por cada mensaje, con el topic, la partición y el offset:

Produce ok: <your-topic>-0@15

Recepción de mensajes

El proyecto de demostración incluye ejemplos de consumidores que se suscriben a un topic mediante el endpoint predeterminado. Hay dos enfoques de suscripción disponibles:

Enfoque

Descripción

Cuándo utilizarlo

Suscripción por topic

El protocolo del grupo de consumidores asigna las particiones automáticamente

En la mayoría de los escenarios. Admite el reequilibrio automático cuando los consumidores se unen al grupo o lo abandonan

Asignación de particiones específicas

Asigna manualmente una o más particiones al consumidor

Cuando necesita un control detallado sobre qué particiones lee un consumidor

El proyecto de demostración proporciona ejemplos de consumidores para ambos enfoques de suscripción. Consulte los archivos de origen en la carpeta kafka-java-demo para ver el código completo del consumidor.

Para ejemplos de código de consumidor en otros lenguajes, consulte SDK overview.

Solución de problemas

Si ocurren errores durante la conexión o la entrega de mensajes, consulte What do I do if an error is reported on a client when I use ApsaraMQ for Kafka?