GNU/Linux >> Belajar Linux >  >> Linux

RabbitMQ - Dapatkan pesan dari antrian menggunakan curl

Anda kehilangan nama antrean:

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

di mana foo adalah host virtual, dan my_queue adalah nama antrean.

sebagai hasilnya:

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

EDIT

Jika Anda menggunakan vhost default:

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

Perhatikan bahwa sintaks tampaknya telah berubah dalam rilis yang lebih baru (dan dokumentasi API HTTP tampaknya tertinggal) dan bukannya requeue pilih ack_mode opsi perlu diatur, mis. "ack_mode"="ack_requeue_true"

Jadi contoh di atas untuk versi RabbitMQ saat ini adalah:

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

Saya berhasil memecahkan masalah. Kuncinya:

Saya tidak memiliki konfigurasi vhost.

RabbitMQ menggunakan notasi "/" untuk VHOST default.

"/" diterjemahkan menjadi %2F di HTTP...

Jadi panggilan yang benar adalah:

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. Mengotomatiskan Permintaan Web Menggunakan Curl?

  2. Dapatkan dukungan dengan menggunakan Obrolan Langsung

  3. Dapatkan delta mouse menggunakan Python! (di Linux)

  1. Bagaimana cara mengunduh tarball dari GitHub menggunakan cURL?

  2. Menggunakan openssl untuk mendapatkan sertifikat dari server

  3. Menggunakan ikal untuk mengirim email

  1. Dapatkan alamat IPv6 di linux menggunakan ioctl

  2. Menggunakan sertifikat klien dalam perintah Curl

  3. Dapatkan Subnet mask di Linux menggunakan bash