Pourquoi n'est-ce pas kafka en continuant à travailler sur l'échec de l'un des courtiers?

J'ai l'impression qu'avec deux courtiers avec sync activé sur mon kafka le programme d'installation doit continuer à travailler même sur l'échec de l'un des courtier en.

Pour le tester j'ai fait une nouvelle rubrique nommée topicname. Sa description est la suivante:

Topic:topicname    PartitionCount:1 ReplicationFactor:1 Configs:
Topic: topicname    Partition: 0    Leader: 0   Replicas: 0 Isr: 0

Ensuite, j'ai couru producer.sh et consumer.sh de la manière suivante:

bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9095 sync --topic topicname

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic topicname --from-beginning

Jusqu'à la fois les courtiers étaient de travail, j'ai vu que les messages ont été reçus correctement par le consommateur, mais quand j'ai tué l'un de l'instance de l'courtiers kill commande, le consommateur a de cesse de montrer-moi de tous les nouveaux messages. Au lieu de cela il m'a montré le message d'erreur suivant:

WARN [ConsumerFetcherThread-console-consumer-57116_ip-<internalipvalue>-1438604886831-603de65b-0-0], Error in fetch Name: FetchRequest; Version: 0; CorrelationId: 865; ClientId: console-consumer-57116; ReplicaId: -1; MaxWait: 100 ms; MinBytes: 1 bytes; RequestInfo: [topicname,0] -> PartitionFetchInfo(9,1048576). Possible cause: java.nio.channels.ClosedChannelException (kafka.consumer.ConsumerFetcherThread)
[2015-08-03 12:29:36,341] WARN Fetching topic metadata with correlation id 1 for topics [Set(topicname)] from broker [id:0,host:<hostname>,port:9092] failed (kafka.client.ClientUtils$)
java.nio.channels.ClosedChannelException
at kafka.network.BlockingChannel.send(BlockingChannel.scala:100)
at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73)
at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:72)
at kafka.producer.SyncProducer.send(SyncProducer.scala:113)
at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:58)
at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:93)
at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:66)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)
Vous disposez de réplication de facteur à 1 ce qui signifie que vos données seront conservées sur un nœud. Pour répliquer les données de l'ensemble de réplication facteur de 2 (vous ne pouvez pas le mettre plus haut que le nombre de courtiers en cluster disponible). Puis essayez à nouveau
J'ai essayé de réglage de la réplication à 2. Quand j'ai tué l'un des courtier, j'ai obtenu l'erreur suivante kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.

OriginalL'auteur Sumit Sinha | 2015-08-03