VT2020-Pulsar-Demo

From air
Jump to navigation Jump to search

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 -a 127.0.0.1 -nss

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