VT2020-Pulsar-Demo
Introduction
Apache Pulsar est assez connu pour être prêt à l'emploi très rapidement. Que ce soit les commandes d'installation ou les commandes d'utilisation, Pulsar est très intuitif et très simple à utiliser.
Installation
L'installation se fait très rapidement et n'a aucun prérequis. Il suffit d'executer les commandes suivantes :
wget https://archive.apache.org/dist/pulsar/pulsar-2.7.0/apache-pulsar-2.7.0-bin.tar.gz
tar xvfz apache-pulsar-2.7.0-bin.tar.gz
cd apache-pulsar-2.7.0
Contenu du package
- bin : Les lignes de commandes de Pulsar - conf : Les fichiers de configuration de Pulsar tel que la configuration du Broker ou la configuration du ZooKeeper - examples : Un fichier JAR contenant les exemples des fonctions de Pulsar - lib : Les fichiers JAR utilisés par Pulsar - licences : Les fichiers de licences
Début de la démonstration
Une fois que l'on est dans le répertoire apache-pulsar-2.7.0, nous pouvons commencer a utiliser certaines commandes Commencons par déployer un premier cluster
./bin/pulsar standalone
Puis, créons 5 consommateurs par exemple :
./bin/pulsar-client consume -s "subscription1" topic1 -n 5
Puis ouvrons un nouveau terminal afin de pouvoir créer des producteurs, on peut envoyer plusieurs messages à la fois, comme par exemple ici Bonjour je m'appelle Ali et J'ai 22 ans :
bin/pulsar-client produce topic1 --messages "Bonjour je m'appelle Ali, J'ai 22 ans"
Une fois ces commandes éxectuées, on remarque que dans terminal du consumer, on obtient le message suivant :
01:42:37.605 [pulsar-client-io-1-1] INFO com.scurrilous.circe.checksum.Crc32cIntChecksum - SSE4.2 CRC32C provider initialized 01:42:37.627 [main] INFO org.apache.pulsar.client.impl.PulsarClientImpl - Client closing. URL: pulsar://localhost:6650/ 01:42:37.634 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ProducerImpl - [topic1] [standalone-1-0] Closed Producer 01:42:37.637 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ClientCnx - [id: 0xda5b2a84, L:/127.0.0.1:40976 ! R:localhost/127.0.0.1:6650] Disconnected 01:42:37.641 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ClientCnx - [id: 0xea7443c9, L:/127.0.0.1:40978 ! R:localhost/127.0.0.1:6650] Disconnected 01:42:37.643 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 2 messages successfully produced
Finalement, si l'on réenvoie une nouvelle requete, mais cette fois ci avec 3 messages à la place de 2 comme ceci :
bin/pulsar-client produce topic1 --messages "Bonjour je m'appelle Ali, J'ai 22 ans, j'aime bien manger"
Un nouveau message apparaitra dans le consumer, qui s'arretera vu qu'il a été programmé pour recevoir 5 messages :
----- got message ----- key:[null], properties:[], content:Bonjour je m'appelle Ali ----- got message ----- key:[null], properties:[], content: J'ai 22 ans ----- got message ----- key:[null], properties:[], content: j'aime bien manger 01:43:46.794 [main] INFO org.apache.pulsar.client.impl.PulsarClientImpl - Client closing. URL: pulsar://localhost:6650/ 01:43:46.803 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ConsumerImpl - [topic1] [subscription1] Closed consumer 01:43:46.806 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ClientCnx - [id: 0x5c800610, L:/127.0.0.1:40970 ! R:localhost/127.0.0.1:6650] Disconnected 01:43:46.808 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ClientCnx - [id: 0xa1c62468, L:/127.0.0.1:40972 ! R:localhost/127.0.0.1:6650] Disconnected 01:43:46.811 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 5 messages successfully consumed
Notons cependant que le consumer que nous avons appelé est configuré pour être un consumer exclusif.
Dans le bin/pulsar-admin, nous avons énormement d'outils afin de pouvoir obtenir des informations, par exemples, nous pouvons obtenir des informations sur les clusters disponibles : Pour afficher les clusters disponibles
./bin/pulsar-admin clusters list
Pour Obtenir des informations sur un cluster
./bin/pulsar-admin clusters get standalone
Pour créer un topic
./bin/pulsar-admin topics create-partitioned-topic --partitions 3 my-partitioned-topic
Pour lister les topics
./bin/pulsar-admin topics list-partitioned-topics public/default
Lister les subscriptions d'un topic
./bin/pulsar-admin topics subscriptions persistent://public/default/topic1
Interface Web
Pour obtenir une interface web de notre cluster in nous suffit d'installer l'image docker suivante :
sudo docker run -it -p 3000:3000 --network=host bbonnin/pulsar-express