2015-11-05 2 views
0

Je suis nouveau à Kafka et j'ai quelques problèmes. Je sais que nous pouvons implémenter une classe Partitioner avec une propre logique de partition qui renvoie une partie spécifique en fonction de la clé du message. Nous pouvons également définir une politique de compactage de journal sous laquelle seulement la dernière version des messages avec la même clé est stockée. Mais j'ai besoin de différentes clés pour le message pour ces actions. Par exemple, nous avons une entité avec l'identifiant et l'adresse (city_id). Je veux choisir la partition en fonction de city_id et ne stocker que les dernières informations sur les personnes ayant le même id. Y a-t-il un moyen de résoudre ce problème? Désolé pour mon mauvais anglais, je veux vraiment apprendre Kafka.Kafka clé de partition supplémentaire ou partitoner sans clé

Répondre

1

Est-il absolument nécessaire que tous les messages avec la même ville soient dirigés vers la même partition? Si oui, pourquoi? Pouvez-vous présenter votre cas d'utilisation qui nécessite cela?

Sinon, vous pouvez simplement inclure à la fois city_id et person_id dans le calcul de hachage. De cette façon, le compactage devrait supprimer tout sauf le dernier message de la personne (à condition que vous ayez un mappage de 1 à 1 de personne à ville, ce qui est généralement vrai dans les schémas)?

+0

J'ai besoin de poster des messages dans différentes parties par city_id car je veux utiliser des consommateurs qui ne consommeront que des partitions spécifiques – mechanikos