[PYTHON] Zeigen Sie den Inhalt der Warteschlange mithilfe der RabbitMQ Management-Web-API an

Überblick

Meine Motivation war, dass ich den Inhalt der Warteschlange "gucken" wollte, um den aktuellen Status der Warteschlange im Dienst anzuzeigen.

Wird über die Web-API abgerufen, um den Inhalt der Warteschlange von Rabbit MQ, einem AMQP-Broker, zu überprüfen. Das ist alles, was Sie mit pika.basic_consume () oder pika.consume () erreichen können. Verwenden Sie jedoch die Verwaltungs-API, um andere Verbraucher nicht zu beeinträchtigen.

Hinweis

Wenn Sie sich die [HTTP-API-Dokumentation] von RabbitMQ (https://cdn.rawgit.com/rabbitmq/rabbitmq-management/rabbitmq_v3_6_0/priv/www/api/index.html) ansehen, können Sie sehen, dass das Element get ist

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.

Es kann ein wenig subtil sein, weil es sagt

Funktionsprüfung

Die Funktionsprüfung wurde unten durchgeführt.

Vorbereitung

Verwaltungs-Plugin aktivieren

Das RabbitMQ Management Plugin muss aktiviert sein.

sudo rabbitmq-plugins enable rabbitmq_management

Speichern Sie Nachrichten in der Warteschlange

Senden Sie eine Nachricht zur Bestätigung an die Warteschlange.

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()

Mit Web-API erhalten

Holen Sie es sich einfach mit httplib.

view_messages.py


from base64 import b64encode
import httplib, json

API_HOST = "localhost"  #Hostname des Verbindungsziels
API_PORT = 15672        #Verbindungsport

def view_messages(vhost, queue, count=1):
    #Montage von 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"}

    #Stellen Sie eine Verbindung zu Rabbit MQ Management her, um Nachrichten zu erhalten
    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"]

Versuch es

Ich werde es versuchen.

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

Referenz

Recommended Posts

Zeigen Sie den Inhalt der Warteschlange mithilfe der RabbitMQ Management-Web-API an
Rufen Sie die Web-API mit Anfragen auf. Beispiel: Flickr
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Anzeigen mit dem Python-Modul des mobilen Nifty Cloud-Backends
Versuchen Sie es mit der PeeringDB 2.0-API
Image Optimize auf der Serverseite mithilfe der Web-API von TinyPNG
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Die Geschichte des Erstellens einer Datenbank mithilfe der Google Analytics-API
Simulation des Inhalts der Brieftasche
Entwicklung einer WEB-Anwendung mit Django [Daten vom Verwaltungsbildschirm hinzufügen]
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Gegenmaßnahmen gegen Proxy bei Verwendung der WEB-API
Vorteile und Beispiele für die Verwendung von Rabbit Mq
Verstehen Sie den Inhalt der sklearn-Pipeline
Siehe den Inhalt von Kumantic Segumantion
Ich habe versucht, die checkio-API zu verwenden
Versuchen Sie, den Zustand der Straßenoberfläche mithilfe von Big Data des Straßenoberflächenmanagements zu ermitteln
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Ich habe den Inhalt des Docker-Volumes überprüft
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie es mit dem Webanwendungsframework Flask
Versuchen Sie, die Kraken-API mit Python zu verwenden
Tweet mit der Twitter-API in Python
Erstellen Sie eine Anwendung mit der Spotify-API
Lesen Sie den gesamten Inhalt von proc / [pid]
Spielen Sie mit Dajare mithilfe der COTOHA-API
Zeichnen Sie benutzerdefinierte Ereignisse mit der Shotgun-API auf
Kenntnis der Verwendung der Aurora Severless Data API
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Lassen Sie Python die durchschnittliche Punktzahl einer Seite mithilfe der PageSpeed Insights-API messen
Erstellen Sie mithilfe der Gesetzes-API ein einfach zu lesendes PDF mit Gesetzen und Regierungsverordnungen
[Python] Summiert automatisch die Gesamtzahl der von Qiita mithilfe der API veröffentlichten Artikel