message-queue - quickstart - kafka vs rabbitmq
Kafka-¿Cómo cometer un desplazamiento después de cada mensaje usando un consumidor de alto nivel? (2)
Hay dos configuraciones relevantes de http://kafka.apache.org/documentation.html#consumerconfigs .
auto.commit.enable
y
auto.commit.interval.ms
Si desea establecerlo de tal manera que el consumidor confirme el desplazamiento después de cada mensaje, será difícil ya que la única configuración es después de un intervalo de tiempo, no después de cada mensaje. Tendrá que hacer alguna predicción de velocidad de los mensajes entrantes y, en consecuencia, establecer la hora.
En general, no se recomienda mantener este intervalo demasiado pequeño porque aumenta enormemente las tasas de lectura / escritura en zookeeper y este se ralentiza porque es muy consistente en todo su quórum.
Estoy usando el consumidor de alto nivel de Kafka. Debido a que estoy usando Kafka como una ''cola de transacciones'' para mi aplicación, debo asegurarme de no perder ni releer ningún mensaje. Tengo 2 preguntas con respecto a esto:
¿Cómo comprometo el desplazamiento al guardián del zoológico? Desactivaré la confirmación automática y la compensación después de que todos los mensajes se consuman correctamente. Parece que no puedo encontrar ejemplos reales de código de cómo hacer esto usando un consumidor de alto nivel. Puede alguien ayudarme con esto?
Por otro lado, he escuchado que comprometerse con el cuidador del zoológico puede ser lento, ¿por lo que otra forma podría ser realizar un seguimiento local de las compensaciones? ¿Es este método alternativo aconsejable? Si es así, ¿cómo lo abordarías?
Primero puede deshabilitar la confirmación automática: auto.commit.enable=false
Luego confirme después de obtener el mensaje: consumer.commitOffsets(true)