Servicios de desarrollo para Kafka
Si hay alguna extensión relacionada con Kafka (por ejemplo, quarkus-smallrye-reactive-messaging-kafka
), Dev Services for Kafka inicia automáticamente un broker de Kafka en modo dev y al ejecutar pruebas. Por lo tanto, no es necesario iniciar un broker manualmente. La aplicación se configura automáticamente.
Dado que el inicio de un broker de Kafka puede ser largo, Dev Services for Kafka utiliza Redpanda, un broker compatible con Kafka que se inicia en ~1 segundo. |
Activación/desactivación de los servicios de desarrollo para Kafka
Los servicios de desarrollo para Kafka se activan automáticamente a menos que:
-
quarkus.kafka.devservices.enabled
se ajusta afalse
-
el
kafka.bootstrap.servers
está configurado -
todos los canales de Kafka de Mensajería Reactiva tienen el atributo
bootstrap.servers
establecido
Dev Services for Kafka se basa en Docker para iniciar el broker. Si su entorno no soporta Docker, tendrá que iniciar el broker manualmente, o conectarse a un broker ya en funcionamiento. Puede configurar la dirección del broker utilizando kafka.bootstrap.servers
.
Broker compartido
La mayoría de las veces se necesita compartir el broker entre aplicaciones. Dev Services for Kafka implementa un mecanismo de descubrimiento de servicios para que sus múltiples aplicaciones Quarkus que se ejecutan en modo dev compartan un único broker.
Dev Services for Kafka inicia el contenedor con la etiqueta quarkus-dev-service-kafka que se utiliza para identificar el contenedor.
|
Si necesitas varios brokers (compartidos), puedes configurar el atributo quarkus.kafka.devservices.service-name
e indicar el nombre del broker. Se busca un contenedor con el mismo valor, o se inicia uno nuevo si no se encuentra ninguno. El nombre de servicio por defecto es kafka
.
El uso compartido está activado por defecto en el modo de desarrollo, pero está desactivado en el modo de prueba. Puede desactivar el uso compartido con quarkus.kafka.devservices.shared=false
.
Ajuste del puerto
Por defecto, Dev Services for Kafka elige un puerto aleatorio y configura la aplicación. Puedes establecer el puerto configurando la propiedad quarkus.kafka.devservices.port
.
Tenga en cuenta que la dirección anunciada de Kafka se configura automáticamente con el puerto elegido.
Configuración de la imagen
Dev Services for Kafka supports Redpanda, kafka-native and Strimzi (in Kraft mode) images.
Redpanda is a Kafka compatible event streaming platform.
Because it provides a fast startup times, dev services defaults to Redpanda images from vectorized/redpanda
.
You can select any version from https://hub.docker.com/r/vectorized/redpanda.
kafka-native provides images of standard Apache Kafka distribution compiled to native binary using Quarkus and GraalVM. While still being experimental, it provides very fast startup times with small footprint.
Image type can be configured using
quarkus.kafka.devservices.provider=kafka-native
Strimzi provides container images and Operators for running Apache Kafka on Kubernetes. While Strimzi is optimized for Kubernetes, the images work perfectly in classic container environments. Strimzi container images run "genuine" Kafka broker on JVM, which is slower to start.
quarkus.kafka.devservices.provider=strimzi
Para Strimzi, puede seleccionar cualquier imagen con una versión de Kafka que tenga soporte para Kraft (2.8.1 y superior) desde https://quay.io/repository/strimzi-test-container/test-container?tab=tags
quarkus.kafka.devservices.image-name=quay.io/strimzi-test-container/test-container:0.100.0-kafka-3.1.0
Configuración de los temas de Kafka
Se puede configurar el Dev Services for Kafka para que cree temas una vez que se inicie el broker. Los temas se crean con un número determinado de particiones y 1 réplica.
El siguiente ejemplo crea un tema llamado test
con 3 particiones, y un segundo tema llamado messages
con 2 particiones.
quarkus.kafka.devservices.topic-partitions.test=3
quarkus.kafka.devservices.topic-partitions.messages=2
Si ya existe un tema con el nombre dado, se salta la creación, sin intentar volver a particionar el tema existente a un número diferente de particiones.
Puede configurar el tiempo de espera para las llamadas del cliente Kafka admin utilizadas en la creación de temas utilizando quarkus.kafka.devservices.topic-partitions-timeout
, por defecto es de 2 segundos.