GNU/Linux >> Znalost Linux >  >> Linux

RabbitMQ - Získejte zprávy z fronty pomocí curl

chybí vám název fronty:

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

kde foo je virtuální hostitel a my_queue je název fronty.

jako výsledek:

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

UPRAVIT

V případě, že používáte výchozí vhost:

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

Všimněte si, že se zdá, že se syntaxe v novějších verzích změnila (a dokumentace HTTP API se zdá být pozadu) a namísto requeue možnost ack_mode je třeba nastavit, např. "ack_mode"="ack_requeue_true"

Takže výše uvedený příklad pro aktuální verze RabbitMQ by byl:

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

Problém se mi podařilo vyřešit. Klíč:

Nemám nakonfigurován žádný vhost.

RabbitMQ používá pro výchozí VHOST zápis "/".

"/" je přeloženo do %2F v HTTP...

Správné volání je tedy:

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. Získejte informace o záhlaví pomocí cURL

  2. Získejte delty myši pomocí Pythonu! (v Linuxu)

  3. Jak si stáhnu tarball z GitHubu pomocí cURL?

  1. Pomocí openssl získáte certifikát ze serveru

  2. Použití curl k odeslání e-mailu

  3. Získejte IPv6 adresy v linuxu pomocí ioctl

  1. Jak získat název hostitele z IP (Linux)?

  2. Použití klientského certifikátu v příkazu Curl

  3. Získejte masku podsítě v Linuxu pomocí bash