Apache Kafka es un sistema de mensajería de publicación y suscripción. Una cola de mensajería le permite enviar mensajes entre procesos, aplicaciones y servidores. En este artículo, veremos cómo enviar mensajes JSON a Apache Kafka en una aplicación Spring Boot.
Para aprender a crear un proyecto Spring Boot, consulte este artículo .
La forma completa de JSON es la notación de objetos de JavaScript. JSON es un formato de datos liviano para el intercambio de datos que los humanos pueden leer y escribir fácilmente, y las máquinas pueden analizar y generar fácilmente. Aunque se deriva de un subconjunto de JavaScript, es independiente del lenguaje. Es un formato de texto completo e independiente del idioma. Se pueden seguir los siguientes pasos para publicar mensajes JSON en Apache Kafka:
- Vaya a spring initializr y cree un proyecto inicial con las siguientes dependencias:
- Telaraña de primavera
- Primavera para Apache Kafka
- Abra el proyecto en un IDE y sincronice las dependencias. En este artículo, estaríamos creando un modelo de estudiante donde estaríamos publicando los detalles del estudiante. Por lo tanto, cree una clase modelo Student . Agregue miembros de datos y cree un constructor y cree captadores y definidores. La siguiente es la implementación de la clase de estudiante:
// Java program to implement a
// student class
// Creating a student class
public
class
Student {
// Data members of the
// student class
int
id;
String firstName;
String lastName;
// Constructor of the student
// class
public
Student(
int
id, String firstName,
String lastName)
{
this
.id = id;
this
.firstName = firstName;
this
.lastName = lastName;
}
// Implementing the getters
// and setters
public
int
getId()
{
return
id;
}
public
void
setId(
int
id)
{
this
.id = id;
}
public
String getFirstName()
{
return
firstName;
}
public
void
setFirstName(String firstName)
{
this
.firstName = firstName;
}
public
String getLastName()
{
return
lastName;
}
public
void
setLastName(String lastName)
{
this
.lastName = lastName;
}
}
- Ahora, crea un nuevo controlador de clase con la anotación @RestController . Cree una API GET e inicialice KafkaTemplate con el parámetro como string y objeto de clase modelo. La siguiente es la implementación del controlador:
// Java program to implement a
// controller
@RestController
@RequestMapping
(
"gfg"
)
public
class
UserResource {
@Autowired
private
KafkaTemplate<String, Student>
kafkaTemplate;
private
static
final
String TOPIC
=
"StudentExample"
;
@GetMapping
(
"/publish/{id}/"
+
"{firstName}/{lastName}"
)
public
String post(
@PathVariable
(
"id"
)
final
int
id,
@PathVariable
(
"firstName"
)
final
String firstName,
@PathVariable
(
"lastName"
)
final
String lastName)
{
kafkaTemplate.send(
TOPIC,
new
Student(
id, firstName,
lastName));
return
"Published successfully"
;
}
}
- Cree una clase StudentConfig con la anotación @Configuration . En esta clase serializaremos el objeto de la clase modelo.
// Java program to serialize the
// object of the model class
@Configuration
public
class
StudentConfig {
@Bean
public
ProducerFactory<String, Student>
producerFactory()
{
// Create a map of a string
// and object
Map<String, Object> config
=
new
HashMap<>();
config.put(
ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
"127.0.0.1:9092"
);
config.put(
ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
StringSerializer.
class
);
config.put(
ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
JsonSerializer.
class
);
return
new
DefaultKafkaProducerFactory<>(config);
}
@Bean
public
KafkaTemplate<String, Student>
kafkaTemplate()
{
return
new
KafkaTemplate<>(
producerFactory());
}
}
- Ahora, inicie zookeeper y el servidor Kafka. Necesitamos crear un nuevo tema con el nombre StudentExample . Para hacerlo, abra una nueva ventana del símbolo del sistema y cambie el directorio a la carpeta Kafka.
- Ahora, cree un nuevo tema usando el comando que se indica a continuación:
Para Mac y Linux: bin/kafka-topics.sh –create –zookeeper localhost:2181 –factor de replicación 1 –particiones 1 –tema nombre_tema
Para Windows: .\bin\windows\kafka-topics.bat –create –zookeeper localhost:2181 –factor de replicación 1 –particiones 1 –tema nombre_tema
- Ahora, para ver los mensajes en el servidor Kafka en tiempo real, use el siguiente comando:
Para Mac y Linux: bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic topic_name –from-beginning
Para Windows: .\bin\windows\kafka-console-consumer.bat –bootstrap-server localhost:9092 –tema nombre_tema –desde-el-principio
- Ejecute la aplicación y llame a la API como:
localhost:8080/gfg/publish/{id}/{nombre}/{apellido}
Nota: si se ha utilizado un puerto diferente, reemplace el puerto con 8080.
Producción:
Publicación traducida automáticamente
Artículo escrito por AakashYadav4 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA