Estoy buscando consejos e indicaciones sobre cómo configurar y ejecutar Apache Kafka en un entorno de prueba de desarrollador e integración.
Me gustaría evitar tener que descargar y configurar manualmente el paquete completo en cada una de las máquinas de los desarrolladores y también encontrar una manera fácil de iniciar los nodos automáticamente cuando se realizan pruebas de integración.
¿Hay algún tipo de Kafka integrado para propósitos de prueba de desarrollo / integración (piense en el paralelo H2 para los desarrolladores de Java que desean evitar un RDBMS completo)?
¿Tengo que recurrir a algún tipo de solución vagabunda? Por cierto, he encontrado el siguiente Gist interesante: https://gist.github.com/svanellewee/8d978db827a860186569 pero requiere configurar Vagrant + VirtualBox ...
2 respuestas
¿Hay algún tipo de Kafka integrado para propósitos de prueba de desarrollo / integración?
Kafka en realidad incluye instalaciones de prueba que le permiten ejecutar clústeres de Kafka integrados, así como instalaciones de prueba unitarias (comenzando con Kafka v0.10.2.0 de 2017). Ver la documentación en: https://kafka.apache.org/documentation/streams/developer- guide / testing.html
Por ejemplo, puede agregar los artefactos relevantes de Maven a su construcción a través de:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams-test-utils</artifactId>
<!-- Replace with desired Kafka version. -->
<version>2.2.0</version>
<scope>test</scope>
</dependency>
La documentación está disponible en: https://kafka.apache.org/documentation/streams/developer- guide / testing.html
Los siguientes indicadores serán útiles para escribir exámenes:
- https://github.com/confluentinc/kafka-streams-examples - { La subcarpeta {X0}} incluye muchas pruebas de integración de extremo a extremo que aceleran los clústeres de Kafka integrados, así como, en algunos casos, Registro de esquema confluente. Estos deberían ser un buen punto de partida para sus propias pruebas.
- https: //github.com/apache/kafka/tree/trunk/streams/src/test/java/org/apache/kafka/streams/integration/utils - instalaciones de prueba similares a las del enlace anterior, pero menos ejemplos incluidos
Me gustaría evitar tener que descargar y configurar manualmente el paquete completo en cada una de las máquinas de los desarrolladores y también encontrar una manera fácil de iniciar los nodos automáticamente cuando se realizan pruebas de integración.
Lo anterior podría ser más fácil si se cubren sus necesidades, ya que se integra bien en un proceso de desarrollo / prueba existente con herramientas como maven, gradle o sbt.
Sin embargo, si necesita realizar pruebas más avanzadas, como eliminar intencionalmente a los corredores de Kafka a mitad de camino para validar que su aplicación sobrevive a interrupciones parciales, por ejemplo, es posible que desee echar un vistazo a:
- https://github.com/apache/kafka/tree/trunk/tests (sistema y pruebas de integración, usando, por ejemplo, docker)
- https://github.com/apache/kafka/tree/trunk/vagrant
- https://github.com/confluentinc/ducktape
Creo que KafkaUnit es lo que más se acerca a H2 aquí. Puede encontrarlo aquí (https://github.com/chbatey/kafka-unit) . O simplemente use vía
<dependency>
<groupId>info.batey.kafka</groupId>
<artifactId>kafka-unit</artifactId>
<version>0.6</version>
</dependency>
Funciona para pruebas de unidad / integración, todo en una JVM, similar a Curator Testingserver.
Nuevas preguntas
apache-kafka
Apache Kafka es una plataforma de transmisión distribuida diseñada para almacenar y procesar flujos de datos de alto rendimiento.