Esta página se tradujo automáticamente con la API de traducción de Google Cloud.
Algunas páginas se pueden leer mejor en su totalidad.
En esta publicación, veremos cómo trabajar con Spring Boot y Apache Kafka. Cubriremos los siguientes temas:
Apache Kafka es una plataforma de transmisión distribuida. Se utiliza para crear canalizaciones de datos en tiempo real y aplicaciones de transmisión. Es escalable horizontalmente, tolerante a fallas y rápido.
Kafka está escrito en Scala y Java. Tiene un modelo de mensajería de publicación-suscripción. Es un sistema de alto rendimiento.
Spring Boot es un marco basado en Java que se utiliza para crear microservicios. Se utiliza para simplificar el arranque y el desarrollo de una nueva aplicación Spring.
Spring Boot es obstinado. Proporciona un conjunto de configuraciones predeterminadas. Facilita la creación de aplicaciones basadas en Spring independientes y de grado de producción.
Para usar Spring Boot con Apache Kafka, debemos agregar la siguiente dependencia a nuestro proyecto:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
También necesitamos agregar la siguiente dependencia si queremos usar Apache Kafka con Avro:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-avro-serializer</artifactId>
</dependency>
Ahora que tenemos las dependencias en su lugar, echemos un vistazo a cómo usar Spring Boot con Apache Kafka.
Primero, necesitamos configurar el agente Apache Kafka. Podemos hacer esto configurando las siguientes propiedades en nuestro archivo application.properties:
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.producer.retries=0
spring.kafka.producer.batch-size=16384
spring.kafka.producer.buffer-memory=33554432
spring.kafka.consumer.group-id=test
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.enable-auto-commit=false
En la configuración anterior, estamos configurando las siguientes propiedades:
Ahora echemos un vistazo a cómo crear un productor. Podemos hacer esto creando una clase Producer:
@Component
public class Producer {
private static final Logger LOGGER = LoggerFactory.getLogger(Producer.class);
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void send(String topic, String message) {
LOGGER.info("sending message='{}' to topic='{}'", message, topic);
kafkaTemplate.send(topic, message);
}
}
En el productor anterior, usamos KafkaTemplate para enviar mensajes al corredor de Kafka.
Ahora echemos un vistazo a cómo crear un consumidor. Podemos hacer esto creando una clase de consumidor:
@Component
public class Consumer {
private static final Logger LOGGER = LoggerFactory.getLogger(Consumer.class);
@KafkaListener(topics = "test", groupId = "test")
public void listen(String message) {
LOGGER.info("received message='{}'", message);
}
}
En el consumidor anterior, usamos la anotación @KafkaListener para escuchar mensajes sobre el tema de "prueba".