2016-11-21 2 views
0

Je suis nouveau à Kafka et le scénario que j'essaye d'accomplir en utilisant Apache Kafka est:Apache Kafka: Peut-on limiter le message à lire par seulement 1 consommateur?

J'ai 3 producteurs qui envoient des instructions sur un sujet particulier dans Kafka. J'ai environ 35 consommateurs qui ramasse une instruction à la fois et exécute la tâche mentionnée dans le jeu d'instructions. Une fois terminé, il affichera les mises à jour à un autre sujet dans Kafka.

Exigences.

  1. Une instruction lue par 1 consommateur ne doit pas être donné à un autre pour le traitement
  2. Priorité des messages * - pas une exigence obligatoire
  3. seulement 1 instruction doit être pris à un moment pour le traitement.

Je sais que cela peut être réalisé en utilisant JMS. Mais mon organisation a déjà une configuration Kafka prête dans le cadre de l'installation HDFS de l'ère du Cloud. Donc, l'utilisation de Kafka pour y parvenir est la plus préférée.

J'ai fait un tour de table pour trouver une solution à ce problème. Mais je n'étais pas en mesure de trouver une réponse appropriée à ma première exigence et la plus importante.

Des suggestions? Et merci d'avance.!

+0

Jetez un oeil ici: http://stackoverflow.com/documentation/apache-kafka/5449/consumer-groups-and-offset-management –

+0

De plus, vous pouvez configurer chaque consommateur pour recevoir un seul message par appel via le paramètre "max.poll.records = 1". Voir http://kafka.apache.org/documentation#newconsumerconfigs –

Répondre

2

Tout ce que vous avez à faire est de mettre les consommateurs dans le même groupe de consommateurs en leur attribuant la même group.id. Une seule instance d'un consommateur dans le même groupe recevra un message.

Se reporter à la documentation à https://kafka.apache.org/documentation#intro_consumers

+1

Voir aussi le paramètre "max.poll.records" http://kafka.apache.org/documentation#newconsumerconfigs –