2017-07-25 2 views
0

Quel est le comportement des sujets qui vont au-delà de leur période de rétention? Est-il possible de leur écrire après leur période de politique de rétention? J'ai essayé d'écrire à eux sur confluent-kafka-dotnet (une bibliothèque .NET) mais quand je cours un consommateur je ne vois aucun message traversant. La valeur de la partition est juste un tableau de chaînes vide. Est-il possible d'écrire sur un sujet au-delà du temps de rétention ou le sujet est-il désactivé?Kafka pouvant écrire sur un sujet au-delà de la période de rétention

using (var consumer = new Consumer(config)) 
{ 
    consumer.Assign(new List<TopicPartitionOffset> { new TopicPartitionOffset(topicName, 0, 0) }); 

    while (true) 
    { 
     Message msg; 
     if (consumer.Consume(out msg)) 
     { 
      Console.WriteLine("Topic: {0} Response: P{1},O{1} :{3}", msg.Topic, msg.Partition, msg.TopicPartitionOffset, Encoding.UTF8.GetString(msg.Value)); 
     } 
    } 
} 

Répondre

1

La période de rétention de Kafka s'applique aux événements passés, pas à l'événement que vous écrivez en ce moment. Vous devriez être en mesure de voir les nouveaux messages, peu importe votre politique de rétention.

Exemple: Un sujet avec rétention 24h est créé à minuit le 1er juillet. À 23h50, le 1er juillet, toutes les données que vous avez écrites pendant toute la journée sont toujours là. À 01h00, le 2 juillet, seules les données qui ont été écrites après 1h00 du matin, 1er juillet seront stockées (dernières 24h), les événements antérieurs sont "purgés".

Si votre consommateur ne peut pas voir les nouveaux messages, c'est l'un des deux: 1. Vos messages sont-ils écrits? (Kafka a un utilitaire de fichier-vidage pour aider à vérifier) ​​ 2. Quand votre consommateur commence-t-il à lire? Si votre client commence à la fin du sujet, il peut manquer les messages précédents. Si cela commence au début, tous les messages apparaîtront dans le sujet. La configuration "auto.offset.reset" contrôle cela. "--from-begin" si vous utilisez le consommateur de la console.