Page Wiki sur le serveur de message
Installation de Apache KAFKA sur notre serveur virtuel:
yum install wget
wget http://apache.crihan.fr/dist/kafka/0.10.2.1/kafka_2.10-0.10.2.1.tgz
tar xzf kafka_2.10-0.10.2.1.tgz
cd kafka_2.10-0.10.2.1/
Maintenant que nous avons installé le package kafka, qui va gérer la file de messages, nous devons installer un zookeeper. Celui-ci 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é, nous pouvons 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