|
Page Wiki sur le serveur de message
|
|
Page Wiki sur le serveur de message
|
|
|
|
|
|
|
|
Installation de Apache KAFKA sur notre serveur virtuel:
|
|
|
|
|
|
|
|
$ yum install wget
|
|
|
|
|
|
|
|
Then,
|
|
|
|
1. wget http://apache.crihan.fr/dist/kafka/0.10.2.1/kafka_2.10-0.10.2.1.tgz
|
|
|
|
2. tar xzf kafka_2.10-0.10.2.1.tgz
|
|
|
|
3. cd kafka_2.10-0.10.2.1/
|
|
|
|
|
|
|
|
Maintenant qu'on a installé le package kafka (qui va gérer la file de message), on doit installer un zookeeper. Il est en charge de réaliser la synchronisation des différents éléments d'un cluster.
|
|
|
|
Zookeeper fonctionne sur la base de JAVA, il faut au préalable vérifier que ce dernier est fonctionnel sur notre serveur:
|
|
|
|
|
|
|
|
$ yum install java-1.8.0-openjdk-devel
|
|
|
|
|
|
|
|
La version kafka téléchargée auparavant contient les binaires de Apache Zookeeper.
|
|
|
|
On peut vérifier sa configuration dans le dossier suivant :
|
|
|
|
|
|
|
|
$ config/zookeeper.properties
|
|
|
|
|
|
|
|
Il ne nous reste plus qu'à le lancer:
|
|
|
|
|
|
|
|
$ ./bin/zookeeper-server-start.sh ./config/zookeeper.properties
|
|
|
|
|
|
|
|
Zookeeper est un serveur avec lequel on peut communiquer sur le port 2181. On peut donc vérifier que Zookeeper a été correctement lancé avec un petit appel telnet:
|
|
|
|
|
|
|
|
$ telnet localhost 2181
|
|
|
|
Trying 127.0.0.1...
|
|
|
|
Connected to localhost
|
|
|
|
|
|
|
|
Maintenant que le Zookeeper est lancé, on peut lancer le service kafka:
|
|
|
|
|
|
|
|
$ ./bin/kafka-server-start.sh ./config/server.properties
|
|
|
|
|
|
|
|
Pareil que Zookeeper, on peut vérifier au préalable le fichier de configuration de Kafka. On sait qu'il écoute sur le port 9092:
|
|
|
|
|
|
|
|
$ telnet localhost 9092
|
|
|
|
Trying 127.0.0.1...
|
|
|
|
Connected to localhost
|
|
|
|
|
|
|
|
|
|
|
|
==> Nous voilà avec un Zookeeper et un broker Kafka, qui représent un cluster Kafka minimal
|
|
|
|
|
|
|
|
Dans Kafka, un message est appelé "Record"; les records sont regroupés par "Topic" ou sujet.
|
|
|
|
On va tout d'abord créé par exemple un topic "test" grâce à un script disponible:
|
|
|
|
|
|
|
|
$ ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
|
|
|
|
|
|
|
|
Je peux vérifier que le topic est bien créé par une commande "./bin/kafka-topics.sh --list --zookeeper localhost 2181" et on obtient l'affichage suivant:
|
|
|
|
|
|
|
|
$ ./bin/kafka-topics.sh --list --zookeeper localhost 2181
|
|
|
|
test
|
|
|
|
|
|
|
|
Ou même afficher les détails du topic:
|
|
|
|
|
|
|
|
$ ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
|
|
|
|
|
|
|
|
Dans Kafka, les messages sont produits par des producers (ou producteurs) et consommés par des consumers (ou consommateurs). On peut "écrire" et "lire" des records (donc message) de la manière suivante:
|
|
|
|
|
|
|
|
Sur le producer:
|
|
|
|
A savoir => Chaque ligne que l'on écrit après cette commande sera considérée comme un message
|
|
|
|
|
|
|
|
$ ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
|
|
|
|
Bonjour comment allez-vous?
|
|
|
|
|
|
|
|
Sur le consumer:
|
|
|
|
|
|
|
|
$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
|
|
|
|
|
|
|
|
A savoir: si on lancer le consumer avant le producer, on verra les messages envoyés par ce dernier en temps réel (avec légère latence). Sinon, tous les messages envoyés avant l'exécution de la commande "consumer" seront mis en buffer.
|
|
|
|
|
|
|
|
Pour contrer ça et lire d'un coup tous les messages envoyés par le producer, on peut rajouter l'option "--from-beginning" à la fin de la commande originale:
|
|
|
|
|
|
|
|
$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
|
|
|
|
|
|
|
|
|