GNU/Linux >> LINUX-Kenntnisse >  >> Linux

RabbitMQ - Abrufen von Nachrichten aus einer Warteschlange mit Curl

Ihnen fehlt der Warteschlangenname:

curl -i -u guest:guest -H "content-type:application/json" -X POST http://127.0.0.1:15672/api/queues/foo/my_queue/get -d'{"count":5,"requeue":true,"encoding":"auto","truncate":50000}'

wobei foo ist der virtuelle Host und my_queue ist der Warteschlangenname.

als Ergebnis:

[
   {
      "payload_bytes":4,
      "redelivered":true,
      "exchange":"",
      "routing_key":"my_queue",
      "message_count":5,
      "properties":{
         "delivery_mode":1,
         "headers":{

         }
      },
      "payload":"test",
      "payload_encoding":"string"
   },
   {
      "payload_bytes":4,
      "redelivered":true,
      "exchange":"",
      "routing_key":"my_queue",
      "message_count":4,
      "properties":{
         "delivery_mode":1,
         "headers":{

         }
      },
      "payload":"test",
      "payload_encoding":"string"
   },
   {
      "payload_bytes":4,
      "redelivered":true,
      "exchange":"",
      "routing_key":"my_queue",
      "message_count":3,
      "properties":{
         "delivery_mode":1,
         "headers":{

         }
      },
      "payload":"test",
      "payload_encoding":"string"
   },
   {
      "payload_bytes":4,
      "redelivered":true,
      "exchange":"",
      "routing_key":"my_queue",
      "message_count":2,
      "properties":{
         "delivery_mode":1,
         "headers":{

         }
      },
      "payload":"test",
      "payload_encoding":"string"
   },
   {
      "payload_bytes":4,
      "redelivered":true,
      "exchange":"",
      "routing_key":"my_queue",
      "message_count":1,
      "properties":{
         "delivery_mode":1,
         "headers":{

         }
      },
      "payload":"test",
      "payload_encoding":"string"
   }
]

BEARBEITEN

Falls Sie den Standard-vhost verwenden:

curl -i -u guest:guest -H "content-type:application/json" -X POST http://127.0.0.1:15672/api/queues/%2f/my_queue/get -d'{"count":5,"requeue":true,"encoding":"auto","truncate":50000}'

Beachten Sie, dass sich die Syntax anscheinend in neueren Versionen geändert hat (und die HTTP-API-Dokumentation hinterherzuhinken scheint) und anstelle von requeue Option ack_mode Option muss eingestellt werden, z.B. "ack_mode"="ack_requeue_true"

Das obige Beispiel für aktuelle RabbitMQ-Versionen wäre also:

curl -u guest:guest -i -H "content-type:application/json" -X POST http://127.0.0.1:15672/api/queues/%2F/foo/get -d'{"count":5,"ack_mode"="ack_requeue_true","encoding":"auto","truncate":50000}' 

Ich habe es geschafft, das Problem zu lösen. Der Schlüssel:

Ich habe keinen vhost konfiguriert.

RabbitMQ verwendet die „/“-Notation für den Standard-VHOST.

„/“ wird in %2F übersetzt im HTTP...

Der richtige Aufruf lautet also:

curl -u guest:guest -i -H "content-type:application/json" -X POST http://127.0.0.1:15672/api/queues/%2F/foo/get -d'{"count":5,"requeue":true,"encoding":"auto","truncate":50000}' 

Linux
  1. Holen Sie sich Header-Informationen mit cURL

  2. Holen Sie sich Unterstützung, indem Sie den Live-Chat verwenden

  3. Verwenden von Windows-DLL von Linux

  4. Verwenden von openssl, um das Zertifikat von einem Server abzurufen

  5. Holen Sie sich eine bestimmte Zeile aus einer Textdatei, indem Sie nur ein Shell-Skript verwenden

SMS-Benachrichtigung von Nagios mit Kannel

Erhalten Sie IPv6-Adressen in Linux mit ioctl

Wie bekomme ich den Hostnamen von der IP (Linux)?

Verwenden des Client-Zertifikats im Curl-Befehl

Holen Sie sich die Subnetzmaske in Linux mit Bash

Wie kann ich Protokollmeldungen vom LAMP-Server unter Ubuntu 10.04 erhalten?