Skip to content

Latest commit

 

History

History
60 lines (39 loc) · 2.53 KB

File metadata and controls

60 lines (39 loc) · 2.53 KB

Projet

Ce projet propose deux workers qui communiquent de manière fiable, asynchrone et tolérante aux pannes à travers une couche événementielle. Le projet est structuré en simili-microservice, et le code proposé sous la forme d'un simili-monorepo.

Démarrage

Ce projet fournit un environnement dockerisé prêt à l'emploi. Équipez-vous donc de Docker, qui vous permettra de garder un environnement propre. Installez également Make.

À la racine du projet, créez un fichier .env.dev, et copiez-collez le contenu suivant (le même bazar que .env.dev.example) :

RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest

RABBITMQ_QUEUE_CAPITALS=capitals
RABBITMQ_QUEUE_COUNTRIES=countries

Cela fait, démarrez l'application en local :

make up

ou bien, si vous n'avez pas Make :

docker-compose -f docker-compose.dev.yml up -d --build

That's all, folks!

Stoppez le conteneur avec make down, ou bien utilisez la commande suivante :

docker-compose -f docker-compose.dev.yml down

En plus des deux workers, deux modules ont été apportés pour permettre un monitoring et un test plus efficaces, et confortables :

  • Dozzle sur http://localhost:9999/ offre un panneau de contrôle des différents conteneurs (et permet d'accéder aux logs).
  • L'interface d'administration de RabbitMQ sur http://localhost:15672/, dont vous pouvez utiliser la console pour écrire un message. Les routine key prises en charge sont countries et capitals.

L'interface RabbitMQ permet notamment de placer des messages sur une queue. Dans la section Exchange, sélectionnez amq.default. Un formulaire apparaît. Par exemple, avec la routine key countries, utilisez la valeur suivante :

{
  "country_name": "France"
}

Utilisez Dozzle pour regarder les différents logs évoluer dans chaque conteneur.

Vous pouvez arrêter les conteneurs à l'envi : les workers essaieront de se reconnecter, et gèrent un certain nombre d'erreurs, en plus d'essayer de se reconnecter seuls. Le code supporte plusieurs types de dysfonctionnements liés à la connexion avec RabbitMQ. Essayez également de mettre n'importe quelle valeur.

Développement

Par commodité, un devcontainer est fourni avec le projet, permettant de développer dans un environnement dockerisé, prêt à l'emploi et équipé du matériel nécessaire pour coder confortablement.