Ejemplo de consumidor de Apache Kafka en Golang

Ejemplo de consumidor de Apache Kafka en Golang

Apache Kafka es una plataforma de streaming distribuida que permite el procesamiento en tiempo real de grandes volúmenes de datos. Es utilizado por muchas empresas para procesar y analizar datos de manera eficiente. Golang, por otro lado, es un lenguaje de programación de código abierto que se ha vuelto muy popular en los últimos años debido a su legibilidad y facilidad de uso.

En este artículo, aprenderás cómo escribir un consumidor de Apache Kafka en Golang. Te guiaré a través de los pasos necesarios para configurar un consumidor de Kafka y procesar mensajes utilizando Golang.

📋 Aquí podrás encontrar✍
  1. Configuración
  2. Escribir el cliente de Kafka en Golang
  3. Ejecutar el cliente de Kafka en Golang
  4. Ejemplos de códigos o comandos
  5. Conclusión

Configuración

Para comenzar, necesitarás tener instalado Kafka. Si no lo tienes instalado, puedes descargarlo del sitio web oficial.

Una vez que tengas Kafka instalado, deberás crear un topic para poder enviar y recibir mensajes. Puedes hacerlo utilizando el siguiente comando:

./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic my-topic

Este comando creará un topic llamado "my-topic" con un solo partition y un solo replicator.

Escribir el cliente de Kafka en Golang

En primer lugar, debemos asegurarnos de tener las dependencias necesarias instaladas. En este caso, vamos a utilizar la librería "sarama" que nos permite comunicarnos con Kafka utilizando Golang. Es posible instalarla utilizando el siguiente comando:

go get github.com/Shopify/sarama

Una vez que hayamos instalado las dependencias, podemos comenzar a escribir nuestro cliente de Kafka.

Comenzaremos importando las librerías necesarias y definiendo algunas variables. En nuestro caso, necesitaremos definir la dirección del servidor de Kafka y el topic al que nos vamos a conectar.

Luego, crearemos una función de manejo de errores básica que nos permitirá capturar cualquier error que ocurra durante el proceso.

A continuación, crearemos una función para configurar nuestro cliente de Kafka. La función configurará el cliente con la dirección del servidor de Kafka y otros detalles importantes.

Una vez que hayamos configurado nuestro cliente, podemos comenzar a escribir la función principal que se encargará de procesar los mensajes. En esta función, primero crearemos un consumidor de Kafka utilizando el cliente que configuramos anteriormente.

Luego, comenzaremos a recibir mensajes utilizando un bucle infinito. Cada mensaje que recibamos será procesado por la función de manejo de mensajes. En nuestro ejemplo, simplemente imprimiremos el contenido del mensaje en la consola.

La función principal queda definida de la siguiente manera:


func main() {
broker := []string{"localhost:9092"}
topic := "my-topic"

config := sarama.NewConfig()
config.Consumer.Return.Errors = true

consumer, err := sarama.NewConsumer(broker, config)
if err != nil {
panic(err)
}
defer func() {
if err := consumer.Close(); err != nil {
panic(err)
}
}()

partitionConsumer, err := consumer.ConsumePartition(topic, 0, sarama.OffsetNewest)
if err != nil {
panic(err)
}
defer func() {
if err := partitionConsumer.Close(); err != nil {
panic(err)
}
}()

for {
msg := <-partitionConsumer.Messages() go handleMessage(msg) } } func handleMessage(msg *sarama.ConsumerMessage) { fmt.Printf("Received message: %sn", string(msg.Value)) }

Ejecutar el cliente de Kafka en Golang

Para ejecutar nuestro cliente de Kafka en Golang, simplemente debemos ejecutar el siguiente comando en la terminal:

go run consumer.go

Si hay mensajes disponibles en el topic, verás los mensajes siendo impresos en la consola.

Ejemplos de códigos o comandos

A continuación, te mostraré algunos ejemplos de comandos que podrás utilizar para interactuar con Kafka.

Enviar mensajes a un topic:

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic

Recibir mensajes de un topic:

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning

Conclusión

En este artículo, aprendiste cómo escribir un consumidor de Apache Kafka en Golang. Aprender a interactuar con Kafka utilizando Golang te permitirá procesar y analizar grandes volúmenes de datos en tiempo real de manera eficiente.

Recuerda que la librería "sarama" es solo una de las muchas maneras en que puedes interactuar con Kafka utilizando Golang. Siéntete libre de experimentar y encontrar la mejor solución para tu caso de uso.

¡Espero que hayas encontrado este artículo útil y que te haya servido para comenzar a trabajar con Apache Kafka en Golang!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir