Ir al contenido

Conector Kafka

El conector Kafka lee y escribe en tópicos de Apache Kafka, con autenticación opcional SASL/PLAIN.

Tipos de Conector:

  • KafkaReader - Consumir mensajes de un tópico como parte de un grupo de consumidores
  • KafkaWriter - Producir mensajes en un tópico

Consumir desde un tópico usando un grupo de consumidores:

{
"type": "KafkaReader",
"config": {
"brokers": ["localhost:9092"],
"topic": "sensor-events",
"groupId": "meddle-consumers"
}
}
{
"type": "KafkaReader",
"config": {
"brokers": [
"kafka-1.example.com:9092",
"kafka-2.example.com:9092",
"kafka-3.example.com:9092"
],
"topic": "factory.events",
"groupId": "meddle-factory-consumers",
"username": "kafka_user",
"password": "kafka_password"
}
}

Producir mensajes en un tópico:

{
"type": "KafkaWriter",
"config": {
"brokers": ["localhost:9092"],
"topic": "processed-events"
}
}
{
"type": "KafkaWriter",
"config": {
"brokers": [
"kafka-1.example.com:9092",
"kafka-2.example.com:9092"
],
"topic": "factory.processed",
"username": "kafka_user",
"password": "kafka_password"
}
}
  • brokers: Lista de direcciones de brokers bootstrap (host:puerto)
  • topic: Nombre del tópico de Kafka
  • groupId: (Lector) Identificador del grupo de consumidores
  • username: (Opcional) Usuario SASL/PLAIN
  • password: (Opcional) Contraseña SASL/PLAIN

El groupId controla cómo se distribuyen las particiones de Kafka entre los lectores:

  • Múltiples lectores con el mismo groupId comparten particiones para escalado horizontal.
  • Múltiples lectores con valores diferentes de groupId reciben cada uno una copia completa del flujo del tópico.
  • Los offsets se comprometen por grupo de consumidores; los reinicios reanudan desde el último offset confirmado.

El escritor utiliza el balanceador LeastBytes, que distribuye los mensajes entre las particiones para minimizar la carga por broker. Los mensajes dentro de un único pipeline de Meddle no tienen garantizado caer en la misma partición.

  • La autenticación se habilita únicamente cuando se proporcionan tanto username como password.
  • El conector usa SASL/PLAIN. Combínalo con TLS en la capa de red (configuración del broker) cuando se ejecute en producción.
  • MQTT - Pub/sub ligero para dispositivos
  • AMQP - Alternativa RabbitMQ
  • NATS - Alternativa de pub/sub cloud-native