[PYTHON] Afficher le contenu de la file d'attente à l'aide de l'API Web de gestion RabbitMQ

Aperçu

Ma motivation était que je voulais "peep" le contenu de la file d'attente afin d'afficher l'état actuel de la file d'attente sur le service.

Obtenu via l'API Web pour vérifier le contenu de la file d'attente de Rabbit MQ, un courtier AMQP. C'est tout ce que vous pouvez obtenir avec pika.basic_consume () ou pika.consume (), mais utilisez l'API de gestion pour éviter d'affecter d'autres consommateurs.

Mise en garde

Si vous regardez la [documentation de l'API HTTP] de RabbitMQ (https://cdn.rawgit.com/rabbitmq/rabbitmq-management/rabbitmq_v3_6_0/priv/www/api/index.html), vous pouvez voir que l'élément get

Please note that the get path in the HTTP API is intended for diagnostics etc - it does not implement reliable delivery and so should be treated as a sysadmin's tool rather than a general API for messaging.

C'est peut-être un peu subtil parce qu'il dit

Contrôle de fonctionnement

L'opération a été confirmée ci-dessous.

Préparation

Activer le plug-in de gestion

Le plugin de gestion RabbitMQ doit être activé.

sudo rabbitmq-plugins enable rabbitmq_management

Stocker les messages dans la file d'attente

Envoyez un message à la file d'attente pour confirmation.

publish.py


#!/usr/bin/env python
import pika
conn = pika.BlockingConnection(pika.ConnectionParameters())
ch = conn.channel()
ch.queue_declare(queue="hello")
ch.basic_publish(exchange="", routing_key="hello", body="Message 1")
ch.basic_publish(exchange="", routing_key="hello", body="Message 2")
conn.close()

Obtenu avec l'API Web

Obtenez-le simplement en utilisant httplib.

view_messages.py


from base64 import b64encode
import httplib, json

API_HOST = "localhost"  #Nom d'hôte de destination de la connexion
API_PORT = 15672        #Port de connexion

def view_messages(vhost, queue, count=1):
    #Assemblage de l'URI etc.
    uri = "/queues/%(vhost)s/%(queue)s/get" % {"vhost": vhost, "queue": queue}
    auth = "guest:guest"
    headers = {
        "Authorization" : "Basic %s" % b64encode(auth),
        "Content-Type"  : "application/json",
    }
    opt = {"count": count, "requeue": "true", "payload_file": None, "encoding": "auto"}

    #Connectez-vous à Rabbit MQ Management pour recevoir des messages
    conn = httplib.HTTPConnection(API_HOST, API_PORT)
    body = json.dumps(opt)
    conn.request("POST", "/api%s" % uri, body, headers)
    response = conn.getresponse()
    return json.loads(response.read())

if __name__ == "__main__":
    msgs = view_messages("%2F", "hello", count=100)
    for msg in msgs:
        print msg["payload"]

Essayez-le

Je vais essayer.

./publish.py
./view_messages.py
Message 1
Message 2

référence

Recommended Posts

Afficher le contenu de la file d'attente à l'aide de l'API Web de gestion RabbitMQ
Accédez à l'API Web à l'aide de requêtes Exemple: Flickr
J'ai essayé d'utiliser l'API de Sakenowa Data Project
Afficher à l'aide du module python du backend mobile Nifty Cloud
Essayez d'utiliser l'API PeeringDB 2.0
Optimisation d'image côté serveur à l'aide de l'API Web de TinyPNG
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
L'histoire de la création d'une base de données à l'aide de l'API Google Analytics
Simulation du contenu du portefeuille
Développement d'une application WEB avec Django [Ajouter des données depuis l'écran de gestion]
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
Contre-mesures contre le proxy lors de l'utilisation de l'API WEB
Avantages et exemples d'utilisation de Rabbit Mq
Comprendre le contenu du pipeline sklearn
Voir le contenu de Kumantic Segumantion
J'ai essayé d'utiliser l'API checkio
Essayez d'obtenir l'état de la surface de la route en utilisant de grandes données de gestion de la surface de la route
Développement et déploiement de l'API REST en Python à l'aide de Falcon Web Framework
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
J'ai vérifié le contenu du volume du docker
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser l'API Kraken avec Python
Tweet à l'aide de l'API Twitter en Python
Créer une application à l'aide de l'API Spotify
Lire tout le contenu de proc / [pid]
Jouez avec Dajare en utilisant l'API COTOHA
Enregistrez des événements personnalisés à l'aide de l'API Shotgun
Connaissance de l'utilisation de l'API de données Aurora Severless
J'ai essayé d'utiliser l'API BigQuery Storage
Laisser Python mesurer le score moyen d'une page à l'aide de l'API PageSpeed Insights
Créez un pdf facile à lire des lois et ordonnances gouvernementales à l'aide de l'API Law
[Python] Totale automatiquement le nombre total d'articles publiés par Qiita à l'aide de l'API