GNU/Linux >> Tutoriels Linux >  >> Linux

RabbitMQ - Récupère les messages d'une file d'attente à l'aide de curl

il vous manque le nom de la file :

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}'

foo est l'hôte virtuel, et my_queue est le nom de la file d'attente.

comme résultat :

[
   {
      "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"
   }
]

MODIFIER

Si vous utilisez le vhost par défaut :

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}'

Notez que la syntaxe semble avoir changé dans les versions plus récentes (et la documentation de l'API HTTP semble être à la traîne) et à la place du requeue option le ack_mode l'option doit être définie, par ex. "ack_mode"="ack_requeue_true"

Ainsi, l'exemple ci-dessus pour les versions actuelles de RabbitMQ serait :

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}' 

J'ai réussi à résoudre le problème. La clé :

Je n'ai pas de vhost configuré.

RabbitMQ utilise la notation "/" pour le VHOST par défaut.

"/" est traduit en %2F en HTTP...

L'appel correct est donc :

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. Bilan de santé de la page Web à l'aide de Curl ?

  2. Obtenir des informations d'en-tête avec cURL

  3. Obtenez de l'aide en utilisant le chat en direct

  4. Utiliser la DLL Windows à partir de Linux

  5. Obtenez des deltas de souris en utilisant Python ! (sous Linux)

Notification par SMS de Nagios via Kannel

Automatiser les requêtes Web à l'aide de Curl ?

Obtenir une ligne spécifique à partir d'un fichier texte en utilisant uniquement un script shell

Ubuntu :Utiliser curl pour télécharger une image

Comment puis-je obtenir des messages de journal du serveur LAMP sur Ubuntu 10.04 ?

Comment obtenir un masque de réseau à partir de bash ?