GNU/Linux >> Linux Esercitazione >  >> Linux

RabbitMQ - Ottieni messaggi da una coda usando curl

ti manca il nome della coda:

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

dove foo è l'host virtuale e my_queue è il nome della coda.

come risultato:

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

MODIFICA

Nel caso tu stia usando il vhost predefinito:

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

Nota che la sintassi sembra essere cambiata nelle versioni più recenti (e la documentazione dell'API HTTP sembra essere in ritardo) e invece del requeue opzione il ack_mode l'opzione deve essere impostata, ad es. "ack_mode"="ack_requeue_true"

Quindi l'esempio sopra per le attuali versioni di RabbitMQ sarebbe:

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

Sono riuscito a risolvere il problema. La chiave:

Non ho configurato alcun vhost.

RabbitMQ utilizza la notazione "/" per il VHOST predefinito.

"/" è tradotto in %2F in HTTP...

Quindi la chiamata corretta è:

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. Controllo dello stato di salute della pagina Web utilizzando Curl?

  2. Ottieni i delta del mouse usando Python! (su Linux)

  3. Come faccio a scaricare un tarball da GitHub usando cURL?

  4. Utilizzo di curl per inviare e-mail

  5. Ottieni indirizzi IPv6 in Linux usando ioctl

Notifica SMS da Nagios tramite Kannel

Ottieni una riga specifica dal file di testo usando solo lo script della shell

Come ottenere il nome host dall'IP (Linux)?

Ubuntu:utilizzo di curl per scaricare un'immagine

Come posso ottenere messaggi di registro dal server LAMP su Ubuntu 10.04?

Come ottenere il nome dell'utente da uid