Consumidor preso na reinscrição
Eu li outros tópicos e resolvi o problema usando um novo ID de grupo, mas gostaria de entender o que poderia causar isso.
Eu tenho um tópico com 16 partições, eu configurei session.timeout.ms = 30000 e max.poll.interval.ms = 30000000.
Eu executo meu programa e o pressiono com a tecla Ctrl + c, para que não seja fechado corretamente. Depois que eu acho, 16 vezes, fico preso nesta questão de reinscrição. session.timeout.ms é o tempo limite de pulsação; depois de 30 segundos, ele deve chutar meu consumidor para a direita e minhas partições devem "liberar", certo? Ou está apenas ouvindo meu max.poll.interval.ms?
EDIT: Eu ainda recebo esse erro intermitentemente e, quando isso acontece, tenho que reiniciar todos os meus consumidores. Isso acontece mesmo quando meus consumidores estão indo bem e, em seguida, eles começam a ficar presos ao se reunir (nenhum consumidor foi adicionado / removido). Aqui está um log de erro de quando tento conectar-me a ele depois de um novo consumidor quando ele está preso nesse estado:
2017-06-29 17:28:16,215 DEBUG [AbstractCoordinator] - [scheduler-1] - Sending JoinGroup ((type: JoinGroupRequest, groupId=ingestion-matching-kafka-consumer-group-dev1, sessionTimeout=30000, rebalanceTimeout=43200000, memberId=, protocolType=consumer, groupProtocols=org.apache.kafka.common.requests.JoinGroupRequest$ProtocolMetadata@b45e5583)) to coordinator kafka04-prod01.messagehub.services.us-south.bluemix.net:9093 (id: 2147483644 rack: null)
2017-06-29 17:37:21,261 DEBUG [NetworkClient] - [scheduler-1] - Node 2147483644 disconnected.
2017-06-29 17:37:21,263 DEBUG [ConsumerNetworkClient] - [scheduler-1] - Cancelled JOIN_GROUP request {api_key=11,api_version=1,correlation_id=19,client_id=ingestion-matching-kafka-consumer-dev1} with correlation id 19 due to node 2147483644 being disconnected
Essas são as primeiras e últimas mensagens que considero relevantes. Aqui estão os intervalos relevantes que eu defini:
session.timeout.ms=30000
max.poll.interval.ms=43200000
request.timeout.ms=43205000 # the docs said to keep this higher than max.poll.interval.ms
enable.auto.commit=false
Devo definir heartbeat.interval.ms também? É este o intervalo em que as pulsações do coração são enviadas automaticamente pelo consumidor para o intermediário em algum encadeamento em segundo plano (li os documentos, mas, por algum motivo, não consigo entender direito)?