web-dev-qa-db-fra.com

Pourquoi ne puis-je pas augmenter session.timeout.ms?

Je souhaite augmenter session.timeout.ms pour permettre un délai plus long pour le traitement des messages reçus entre les appels poll(). Cependant, lorsque je remplace session.timeout.ms par une valeur supérieure à 30000, il ne parvient pas à créer un objet consommateur et renvoie une erreur en dessous. 

Quelqu'un pourrait-il dire pourquoi je ne peux pas augmenter la valeur session.timeout.ms ou s'il me manque quelque chose?

0    [main] INFO  org.Apache.kafka.clients.consumer.ConsumerConfig  - ConsumerConfig values: 

request.timeout.ms = 40000
check.crcs = true
retry.backoff.ms = 100
ssl.truststore.password = null
ssl.keymanager.algorithm = SunX509
receive.buffer.bytes = 262144
ssl.cipher.suites = null
ssl.key.password = null
sasl.kerberos.ticket.renew.jitter = 0.05
ssl.provider = null
sasl.kerberos.service.name = null
session.timeout.ms = 40000
sasl.kerberos.ticket.renew.window.factor = 0.8
bootstrap.servers = [server-name:9092]
client.id = 
fetch.max.wait.ms = 500
fetch.min.bytes = 50000
key.deserializer = class org.Apache.kafka.common.serialization.StringDeserializer
sasl.kerberos.kinit.cmd = /usr/bin/kinit
auto.offset.reset = latest
value.deserializer = class org.Apache.kafka.common.serialization.StringDeserializer
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
partition.assignment.strategy = [org.Apache.kafka.clients.consumer.RangeAssignor]
ssl.endpoint.identification.algorithm = null
max.partition.fetch.bytes = 2097152
ssl.keystore.location = null
ssl.truststore.location = null
ssl.keystore.password = null
metrics.sample.window.ms = 30000
metadata.max.age.ms = 300000
security.protocol = PLAINTEXT
auto.commit.interval.ms = 5000
ssl.protocol = TLS
sasl.kerberos.min.time.before.relogin = 60000
connections.max.idle.ms = 540000
ssl.trustmanager.algorithm = PKIX
group.id = test7
enable.auto.commit = false
metric.reporters = []
ssl.truststore.type = JKS
send.buffer.bytes = 131072
reconnect.backoff.ms = 50
metrics.num.samples = 2
ssl.keystore.type = JKS
heartbeat.interval.ms = 3000

Exception dans le fil "principal" org.Apache.kafka.common.KafkaException: Impossible de construire le consommateur kafka à org.Apache.kafka.clients.consumer.KafkaConsumer. (KafkaConsumer.Java:624) à org.Apache.kafka.clients.consumer.KafkaConsumer. (KafkaConsumer.Java:518) à org.Apache.kafka.clients.consumer.KafkaConsumer. (KafkaConsumer.Java:500)

13
Deeps

La plage de délai d'expiration de session client est contrôlée par le courtier group.max.session.timeout.ms (30s par défaut) et group.min.session.timeout.ms (6s par défaut).

Vous devez augmenter group.max.session.timeout.ms en premier chez le courtier, sinon vous obtiendrez "Le délai de session expiré ne se situe pas dans une plage acceptable.". 

12
Shawn Guo
  • N'oubliez pas ces conditions pour changer session.timeout.ms:
    1. group.max.session.timeout.ms dans le fichier server.properties> session.timeout.ms dans le fichier consumer.properties.
    2. group.min.session.timeout.ms dans le fichier server.properties <session.timeout.ms dans le fichier consumer.properties.
    3. request.timeout.ms> session.timeout.ms et fetch.max.wait.ms
    4. (session.timeout.ms)/3> heartbeat.interval.ms
    5. session.timeout.ms> Temps de traitement du pire cas de Consumer Records par interrogation de consommateur (ms).
9
preetham

j'utilise Spring-Kafka

j'avais ajouté la configuration suivante, mais le consommateur n'était toujours pas au rendez-vous:

buildProperties.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, env.getProperty("kafka.user-events-min-bytes"));
    buildProperties.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG, env.getProperty("kafka.user-events-wait-time-ms") );
    buildProperties.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, env.getProperty("kafka.user-events-wait-time-ms") );
    buildProperties.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, env.getProperty("kafka.user-events-request-timeout-ms"));
    buildProperties.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, env.getProperty("kafka.user-events-wait-time-ms"));

j'ai compris que cela échouait parce que poll.timeout était à 1000;

factory.getContainerProperties().setPollTimeout(Integer.parseInt(env.getProperty("kafka.user-events-wait-time-ms")));
1
Salona Sinha