2017-10-03 11 views
1

Après avoir écrit un producteur basé sur le canal de base dans golang en utilisant confluent-kafka-go et une seule partition kafka simple courtier mis en place par confluent. Lors de la production parfois pendant l'itération à travers le acks le décalage du message produit avec succès est reçu comme .Kafka renvoyant Offset à 0 lors de la production

journaux Exemples:

{ "niveau": "info", "msg": "Publié avec succès le test de sujet, OFFSET 0, Partition 0 et longueur 1316", "temps": "2017- 10-03T17: 03: 43 + 05: 30 "}

{" level ":" info "," msg ":" Publié avec succès au test de sujet, décalage 0, partition 0 et longueur 1316 "," heure " : "2017-10-03T17: 03: 43 + 05: 30"}

Ceci est la fonction qui effectue une itération sur la kafka acks:

func (kc *KafkaClient) HandleAcknowledgements() { 
    for event := range kc.AckChannel { 
    message := event.(*kafka.Message) 

    if message.TopicPartition.Error != nil { 
     log.Errorf("Delivery Failed: Partition: %d Reason: %v", message.TopicPartition.Partition, message.TopicPartition.Error) 
    } else { 
     if message.TopicPartition.Offset == 0 { 
     bodyLen := len(message.Value) 
     log.Infof("Published successfully to topic %s, offset %s, Partition %d and Length %d", *message.TopicPartition.Topic, message.TopicPartition.Offset, message.TopicPartition.Partition, bodyLen) 
     } 
    } 
    } 
} 

Ma politique de rétention est comme ci-dessous:

log.retention.hours=168 

Toute sorte d'aide sera grande, pour pourquoi cela arrive!

Merci.

+0

pas sûr de ce client qui est juste un emballage sur le client C, avez-vous essayé celui-ci https://github.com/Shopify/sarama? –

+0

Oui, j'ai essayé de répliquer ce comportement, probablement ce problème a quelque chose à voir avec la bibliothèque elle-même. J'ai remarqué que, les messages sont produits et que le décalage est maintenu correctement en interne, c'est juste que le décalage n'est pas reflété dans les accusations. Besoin de creuser plus profondément pour connaître la raison réelle. Mettra à jour le poste une fois que je rencontre quelque chose de concret! Merci @YandryPozo! – nams

Répondre

0

Essayez de définir produce.offset.report sur true dans la configuration.

Essayez le réglage produce.offset.report true pour le producteur, sinon il ne compte le décalage du dernier message dans chaque lot /messageSet.

Le client go devrait vraiment le faire par défaut.

https://github.com/confluentinc/confluent-kafka-go/issues/95#issuecomment-330837647

Si cela ne résout pas votre problème, vous pouvez afficher le code et config que vous utilisez pour la production?