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 ...

8
balteo 7 mar. 2017 a las 13:05

2 respuestas

La mejor respuesta

¿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:

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:

2
Michael G. Noll 23 abr. 2019 a las 11:40

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.

2
Karl Richter 15 nov. 2019 a las 13:21