GNU/Linux >> Linux の 問題 >  >> Linux

RabbitMQ - curl を使用してキューからメッセージを取得する

キュー名がありません:

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 は仮想ホストで、my_queue はキュー名です。

結果:

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

編集

デフォルトの仮想ホストを使用している場合:

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

最近のリリースでは構文が変更されているようで (HTTP API ドキュメントは遅れているようです)、代わりに requeue に注意してください。 オプション ack_mode オプションを設定する必要があります。 "ack_mode"="ack_requeue_true"

したがって、現在の RabbitMQ バージョンの上記の例は次のようになります:

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

私は問題を解決することができました。キー:

<ブロック引用>

仮想ホストが構成されていません。

RabbitMQ は、デフォルトの VHOST に「/」表記を使用します。

"/" は %2F に変換されます HTTPで...

したがって、正しい呼び出しは次のとおりです:

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. cURLでヘッダー情報を取得する

  2. ライブチャットを使用してサポートを受ける

  3. Python を使用してマウス デルタを取得します。 (Linux の場合)

  1. openssl を使用してサーバーから証明書を取得する

  2. シェルスクリプトだけを使用してテキストファイルから特定の行を取得する

  3. Ubuntu:curl を使用してイメージをダウンロードする

  1. Curlを使用してWebリクエストを自動化しますか?

  2. Curlを使用したWebページのヘルスチェック?

  3. uidからユーザー名を取得する方法