Del pasaje proporcionado, enumera las principales API de Kafka. Sepáralas con una coma.
Kafka almacena mensajes clave-valor que proceden de un número arbitrario de procesos llamados productores. Los datos pueden dividirse en diferentes "particiones" dentro de diferentes "temas". Dentro de una partición, los mensajes se ordenan estrictamente por sus desplazamientos (la posición de un mensaje dentro de una partición), y se indexan y almacenan junto con una marca de tiempo. Otros procesos llamados "consumidores" pueden leer mensajes de las particiones. Para el procesamiento de flujos, Kafka ofrece la API Streams que permite escribir aplicaciones Java que consumen datos de Kafka y escriben los resultados de vuelta a Kafka. Apache Kafka también funciona con sistemas externos de procesamiento de flujos como Apache Apex, Apache Beam, Apache Flink, Apache Spark, Apache Storm y Apache NiFi.

Kafka se ejecuta en un clúster de uno o más servidores (llamados brokers), y las particiones de todos los temas se distribuyen por los nodos del clúster. Además, las particiones se replican en varios brokers. Esta arquitectura permite a Kafka entregar flujos masivos de mensajes de forma tolerante a fallos y le ha permitido sustituir a algunos de los sistemas de mensajería convencionales como Java Message Service (JMS), Advanced Message Queuing Protocol (AMQP), etc. Desde la versión 0.11.0.0, Kafka ofrece escrituras transaccionales, que proporcionan procesamiento de flujos exactamente una vez utilizando la API Streams.

Kafka admite dos tipos de temas: Regulares y compactados. Los temas regulares pueden configurarse con un tiempo de retención o un límite de espacio. Si hay registros más antiguos que el tiempo de retención especificado o si se supera el límite de espacio para una partición, Kafka puede eliminar los datos antiguos para liberar espacio de almacenamiento. Por defecto, los temas se configuran con un tiempo de retención de 7 días, pero también es posible almacenar datos indefinidamente. En los temas compactados, los registros no caducan en función de los límites de tiempo o espacio. En su lugar, Kafka trata los mensajes posteriores como actualizaciones de mensajes anteriores con la misma clave y garantiza que nunca se borrará el último mensaje por clave. Los usuarios pueden borrar mensajes por completo escribiendo un mensaje llamado lápida con valor nulo para una clave específica.

Hay cinco API principales en Kafka:

Producer API - Permite a una aplicación publicar flujos de registros.
API de consumidor: permite a una aplicación suscribirse a temas y procesar flujos de registros.
Connector API - Ejecuta las API reutilizables de productor y consumidor que pueden vincular los temas a las aplicaciones existentes.
API de flujos - Esta API convierte los flujos de entrada en salida y produce el resultado.
Admin API - Se utiliza para gestionar temas Kafka, brokers y otros objetos Kafka.
Las API de consumidor y productor están desacopladas de la funcionalidad central de Kafka mediante un protocolo de mensajería subyacente. Esto permite escribir capas de API compatibles en cualquier lenguaje de programación que sean tan eficientes como las API Java incluidas en Kafka. El proyecto Apache Kafka mantiene una lista de dichas API de terceros.
Productor API, Consumidor API, Conector API, Streams API, Admin API