The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

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 a false

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

Transactional and Idempotent producers support

By default, the Red Panda broker is configured to enable transactions and idempotence features. You can disable those using:

quarkus.kafka.devservices.redpanda.transaction-enabled=false
Redpanda transactions does not support exactly-once processing.

Related content