2017-10-20 57 views
0

Supposons que je n producteur qui envoient des données pour chaque horodatage t à Kafka. La condition du consommateur pour obtenir des données pour l'horodatage t, est que les données pour l'horodatage t sont reçues de tous les producteurs.Apache Kafka laisse aux consommateurs de vérifier les données de sujet et demandez-leur si la condition était remplie

Est-ce que Kafka laisse le consommateur faire un tel contrôle? Ou Kafka a-t-il une stratégie pour un tel problème?

+0

Ceci n'est pas supporté. Comparez https://stackoverflow.com/questions/46610592/kafka-streams-filtering-broker-or-consumer-side et https://stackoverflow.com/questions/40376905/implement-filering-for-kafka-messages. –

+0

Copie possible de [Mettre en œuvre le filtrage des messages kafka] (https://stackoverflow.com/questions/40376905/implement-filering-for-kafka-messages) –

+0

Le consommateur connaît-il la valeur de n? –

Répondre

0

Il n'y a aucun moyen de faire du filtrage chez le courtier Kafka lui-même, et les conducteurs consommateurs ne font aucun filtrage. Le protocole Kafka décrit la requête d'extraction ici: https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-FetchRequest

Fondamentalement, chaque requête d'extraction contiendra un ensemble de sujet, de partition, de décalage et il n'y a pas de filtrage basé sur le contenu. Kafka est une file d'attente de messages, et en elle-même, elle ne regarde pas les messages. Quel que soit le filtrage dont vous avez besoin, il devrait être dans la logique de traitement. Si un message ne correspond pas aux critères de filtrage, il suffit de l'ignorer (le décalage hors tracé doit être validé automatiquement ou par un appel explicite pour tous les messages)