GNU/Linux >> Tutoriales Linux >  >> Linux

RabbitMQ:obtenga mensajes de una cola usando curl

te falta el nombre de la cola:

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

donde foo es el host virtual, y my_queue es el nombre de la cola.

como resultado:

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

EDITAR

En caso de que esté utilizando el host virtual predeterminado:

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

Tenga en cuenta que la sintaxis parece haber cambiado en versiones más recientes (y la documentación de la API HTTP parece estar rezagada) y en lugar de requeue opción el ack_mode es necesario configurar la opción, p. "ack_mode"="ack_requeue_true"

Entonces, el ejemplo anterior para las versiones actuales de RabbitMQ sería:

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

Logré resolver el problema. La clave:

No tengo vhost configurado.

RabbitMQ usa la notación "/" para el VHOST predeterminado.

"/" se traduce a %2F en HTTP...

Entonces la llamada correcta es:

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. ¿Comprobación del estado de la página web con Curl?

  2. Obtenga soporte mediante el chat en vivo

  3. Uso de DLL de Windows desde Linux

  4. ¡Obtenga deltas del mouse usando Python! (en Linux)

  5. ¿Cómo descargo un tarball de GitHub usando cURL?

Notificación por SMS de Nagios usando Kannel

¿Automatizar solicitudes web usando Curl?

Obtener información de encabezado con cURL

Obtenga una línea específica del archivo de texto usando solo un script de shell

Ubuntu:usar curl para descargar una imagen

¿Cómo puedo obtener mensajes de registro del servidor LAMP en Ubuntu 10.04?