RabbitMQ - Didacticiels

Comment provisionner un PaaS RabbitMQ ?

Pour commencer, rendez-vous sur ITCare et recherchez votre service global cible où vous créerez votre nouveau cluster RabbitMQ.

Recherchez votre service Global dans la barre de recherche supérieure et cliquez dessus pour afficher sa page d'information.

Une fois dans votre Service Global, cliquez sur le bouton Créer une ressource, sélectionnez RabbitMQ et la version requise.

Remplir le formulaire :

  • Sélectionner une topologie

  • Définir le nom du futur cluster

  • Si topologie Cluster : sélectionner le nombre de broker (3+)

  • Le dimensionnement

  • Le stockage requis sur chaque broker

  • La localisation cible

  • Le réseau cible

  • Les options de gestion (sauvegarde, surveillance, 24/7, réplication site distant)

Cliquer sur Suivant une fois les champs remplis. A l'étape suivante, saisir le mot de passe du compte super user qui sera fourni puis cliquer sur Suivant.

Les mots de passe ne sont pas sauvegardés par cegedim.cloud.

Assurez-vous de sauvegarder votre mot de passe!

Réviser la synthèse avant de soumettre le formulaire.

Le provisionnement peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation.

Une fois le déploiement prêt, vous en serez informé par e-mail.

Démarrer un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Démarrer et confirmer.

Le démarrage d'un cluster démarre toutes les machines virtuelles attachées au cluster.

Une notification par courriel sera envoyée lorsque le service sera activé.

Arrêter un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Stop.

Saisissez un numéro RFC pour le suivi (facultatif). Cliquez sur Soumettre.

L'arrêt d'un cluster arrêtera toutes les machines virtuelles attachées au cluster et la surveillance sera désactivée.

Une notification par courrier électronique sera envoyée lorsque le cluster sera arrêté.

Redimensionner les nœuds

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Redimensionner.

Sélectionnez les nœuds que vous souhaitez redimensionner et sélectionnez la nouvelle taille (cpu/ram).

Chaque nœud sera redimensionné et redémarré de manière séquentielle.

Une notification par courriel sera envoyée lorsque tous les nœuds auront été redimensionnés.

Supprimer un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Supprimer. Cette action arrêtera et supprimera toutes les machines virtuelles.

Veuillez noter que cette action n'est pas récupérable!

Saisissez un numéro RFC pour le suivi (facultatif), puis cliquez sur Soumettre.

Une notification par courriel sera envoyée lorsque le cluster sera supprimé.

Gérer un cluster

Interface utilisateur de gestion

Une fois que votre déploiement est prêt, vous pouvez accéder à l'interface utilisateur de gestion de votre déploiement à partir d'ITCare.

Ce lien est disponible dans le panneau "Configuration" de votre déploiement.

API HTTP

RabbitMQ peut également être géré via une API.

Une fois que vous avez obtenu le lien vers votre interface de gestion, l'API est disponible en ajoutant simplement /api à la fin de l'URL.

Pour obtenir plus d'informations sur l'utilisation de l'API, veuillez consulter la documentation ci-dessous.

Comment produire des messages en Python ?

Cette section fournit des exemples de code Python pour produire des messages vers une queue simple ou une queue de quorum.

Bien sûr, vous pouvez utiliser le langage de développement de votre choix ou n'importe quel middleware qui supporte AMQP.

En outre, si AMQPS est activé (TLS/SSL), une configuration supplémentaire est nécessaire. Il y a aussi un exemple pour cela.

File d'attente simple

#!/usr/bin/python3
import pika
 
credentials = pika.PlainCredentials('user','password')
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='hostname', credentials=credentials))
channel = connection.channel()
 
channel.queue_declare(queue='simple-queue')
 
channel.basic_publish(exchange="", routing_key='simple-queue', body='Hello World!')
print(" [x] Sent 'Hello World!'")
 
connection.close()

File d'attente Quorum

Fortement recommandé dans une configuration en cluster pour une résilience maximale !

#!/usr/bin/python3
import pika
 
credentials = pika.PlainCredentials('user','password')
connection = pika.BlockingConnection(
pika.ConnectionParameters(host='hostname', credentials=credentials))
channel = connection.channel()
 
channel.queue_declare(queue="quorum-queue",durable=True,arguments={"x-queue-type": "quorum"})
 
channel.basic_publish(exchange="", routing_key='quorum-queue', body='Hello World!')
print(" [x] Sent 'Hello World!'")
 
connection.close()

AMQPS

Lorsque TLS/SSL est activé pour AMQP procotol, le certificat doit être géré soit en le déclarant, soit en l'ajoutant à votre magasin de certificats.

#!/usr/bin/python3
import pika
import ssl
 
logging.basicConfig(level=logging.INFO)
context = ssl.create_default_context(cafile="/path/to/certificate/my-certificate.pem")
ssl_options = pika.SSLOptions(context, "hostname")
credentials = pika.PlainCredentials('user','password')
conn_params = pika.ConnectionParameters(host='hostname', port=5671, ssl_options=ssl_options, credentials=credentials)
 
with pika.BlockingConnection(conn_params) as conn:
    ch = conn.channel()
    ch.queue_declare(queue="quorum-queue",durable=True,arguments={"x-queue-type": "quorum"})
    ch.basic_publish(exchange="", routing_key='quorum-queue', body='Hello World!')
    print(" [x] Sent 'Hello World!'")
 
connection.close()

Comment consommer des messages en Python ?

Cette section fournit des exemples de code Python pour consommer des messages.

#!/usr/bin/python3
import pika, sys, os
 
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
 
def main():
    credentials = pika.PlainCredentials('user','password')
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='hostname', credentials=credentials))
 
    channel = connection.channel()
 
    # Simple queue
    # channel.queue_declare(queue='hello')
    # channel.basic_consume(queue="hello", on_message_callback=callback, auto_ack=True)
 
    # Quorum queue
    channel.queue_declare(queue="quorum-queue",durable=True,arguments={"x-queue-type": "quorum"})
    channel.basic_consume(queue="quorum-queue", on_message_callback=callback, auto_ack=True)
 
    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()
 
if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('Interrupted')
        try:
            sys.exit(0)
        except SystemExit:
            os._exit(0)

Dernière mise à jour