Presentación de Kafka en Spring Boot

Presentación de Kafka en Spring Boot

Hasta ahora, en nuestros capítulos anteriores, hemos utilizado las bibliotecas oficiales y las API proporcionadas por apache kafka. Integramos estas bibliotecas en Java antiguo y definimos nuestros casos de uso. Pero ahora, en todos nuestros próximos capítulos, usaremos bota de primavera e intente agregar las bibliotecas relevantes para integrar Kafka.

Índice
  1. Presentamos Spring Boot
  2. Dependencias de Kafka para Spring Boot
  3. Envía un mensaje Kafka simple
  4. Recibir el mismo mensaje de Kafka
  5. Conclusión

Presentamos Spring Boot

bota de primavera es un marco de código abierto desarrollado y mantenido por la compañía llamada Pivote. Proporciona una plataforma para que los desarrolladores de Java desarrollen una aplicación Spring de nivel de producción, autoconfigurada y autónoma, en la que podemos centrarnos en la implementación de nuestro negocio en lugar de la lógica de bajo nivel. Spring Boot también es dogmático porque decide los valores predeterminados para nuestra configuración. También es compatible con los paquetes y bibliotecas subyacentes para instalar las características o dependencias que necesitamos.

Spring Boot está diseñado para cumplir los siguientes propósitos:

  • Para alojar y desarrollar fácilmente código de calidad de producción.
  • Para reducir el tiempo de desarrollo y ejecutar la aplicación independientemente de la infraestructura y el marco.
  • Para evitar configuraciones XML complejas proporcionadas por Spring.
  • Proporcione una forma flexible de definir beans Java y transacciones de base de datos.
  • Para proporcionar un potente procesamiento por lotes y administrar las API REST.
  • Para facilitar la gestión de dependencias e incluir el contenedor de servlets integrado.

Dicho esto, pasemos rápidamente a nuestro desarrollo y comencemos a definir nuestras dependencias para publicar y consumir mensajes de Kafka.

Dependencias de Kafka para Spring Boot

En nuestros capítulos anteriores, ya hemos configurado y alojado nuestra instancia de clúster de Kafka. Definiremos o configuraremos nuestro cliente Kafka como parte de nuestro Spring Boot. Ahora, para iniciar rápidamente nuestra configuración, debemos abrir Spring Initializr y pasar las siguientes dependencias:

Primavera Initializr Kafka

  • lona de primavera - para incluir el componente integrado Spring MVC y Tomcat.
  • Primavera para Apache Kafka - para alojar y administrar el cliente Kafka.
  • Lombok - una biblioteca útil que nos ayuda a reducir el código repetitivo, como captadores, establecedores y constructores.

El proyecto generado tiene las siguientes dependencias en pom.xml:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.kafka</groupId>
	<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

Ahora, de acuerdo con los objetivos de Spring Boot, configuremos automáticamente y rápidamente los componentes conscientes predeterminados de Spring Boot e iniciemos nuestra aplicación. Ya hemos definido nuestras dependencias. Establezcamos algunos de los valores para pasar los detalles de Kafka y anular la configuración predeterminada en application.yml:

server:
  port: 8080
spring:
  kafka:
    consumer:
      bootstrap-servers: localhost:9092
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    producer:
      bootstrap-servers: localhost:9092
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

Aquí definimos los detalles del corredor de Kafka como parte de servidores de arranque y el serializador Y deserializador para imprimir/interceptar mensajes.

Envía un mensaje Kafka simple

Usemos nuestra lógica para publicar algunas publicaciones rápidas de muestra sobre uno de nuestros temas. Primero, crearemos un tema en Kafka ejecutando el siguiente comando:

bin/kafka-topics.sh \
    --create \
    --zookeeper localhost:2181 \
    --replication-factor 3 \
    --partitions 3 \
    --topic test \
    --config min.insync.replicas=2

Ahora solo tenemos que cablear automáticamente el KafkaTemplate bean y usarlo para enviar mensajes. EL KafkaTemplate envuelve un productor y proporciona varios métodos convenientes para enviar datos a temas de Kafka.

@Autowired
private KafkaTemplate<String, String> kafkaTemplate;

@PostConstruct
public void sendMessage() {
	String message = "Hello World";
	log.info(String.format("Message sent -> %s", message));
	this.kafkaTemplate.send("test", message);
}

Finalmente, para automatizar nuestro proceso, anotamos nuestro sendMessage con @PostConstruct anotación para que este método pueda llamarse inmediatamente después de que se inicie/inicie nuestra aplicación.

Eso es todo después de eso, podemos ver que el "Hola mundo" el mensaje esta publicado en prueba sujeto.

Recibir el mismo mensaje de Kafka

Ahora, una vez que hayamos publicado el mensaje en el tema de Kafka, debemos leer el mismo mensaje e imprimirlo en el registro de nuestra consola. Para esto, simplemente podemos definir nuestro método de consumidor y anotar con @KafkaListener. EL @KafkaListener La anotación se utiliza para designar un método de bean como oyente para un contenedor de oyentes.

@KafkaListener(topics = "test",	groupId = "group-id")
public void consume(String message)	{
	log.info(String.format("Message received -> %s", message));
}

Como podemos ver, Spring Boot usa las configuraciones anteriores definidas como parte de application.yml e interceptar o decodificar los mensajes basándose en los serializadores y deserializadores definidos.

Conclusión

Para este capítulo, implementamos rápidamente código Spring para publicar o consumir mensajes de Kafka muy fácilmente. En nuestro próximo capítulo, profundizaremos en cada uno de los componentes que proporciona Spring y crearemos nuestros propios casos de uso.

Si quieres conocer otros artículos parecidos a Presentación de Kafka en Spring Boot puedes visitar la categoría Código.

Deja un comentario

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

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas