[rabbitmq] 명령 줄에서 직접 RabbitMQ 메시지 내용을 볼 수 있습니까?

명령 줄에서 직접 RabbitMQ 메시지 내용을 볼 수 있습니까?

sudo rabbitmqctl list_queues 대기열을 나열합니다.

같은 명령이 sudo rabbitmqctl list_queue_messages <queue_name>있습니까?



답변

관리 플러그인을 활성화해야합니다.

rabbitmq-plugins enable rabbitmq_management

여기를 보아라:

http://www.rabbitmq.com/plugins.html

그리고 여기에 관리의 세부 사항이 있습니다.

http://www.rabbitmq.com/management.html

마지막으로 설정이 완료되면 아래 지침에 따라 rabbitmqadmin 도구를 설치하고 사용해야합니다. 시스템과 완전히 상호 작용하는 데 사용할 수 있습니다.
http://www.rabbitmq.com/management-cli.html

예를 들면 :

rabbitmqadmin get queue=<QueueName> requeue=false

대기열에서 첫 번째 메시지를 제공합니다.


답변

큐의 내용을 가져 오는 데 사용하는 명령은 다음과 같습니다.

https://www.rabbitmq.com/management-cli.html을 사용하는 Fedora linux의 RabbitMQ 버전 3.1.5

내 교환은 다음과 같습니다.

eric@dev ~ $ sudo python rabbitmqadmin list exchanges
+-------+--------------------+---------+-------------+---------+----------+
| vhost |        name        |  type   | auto_delete | durable | internal |
+-------+--------------------+---------+-------------+---------+----------+
| /     |                    | direct  | False       | True    | False    |
| /     | kowalski           | topic   | False       | True    | False    |
+-------+--------------------+---------+-------------+---------+----------+

내 대기열은 다음과 같습니다.

eric@dev ~ $ sudo python rabbitmqadmin list queues
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
| vhost |   name   | auto_delete | consumers | durable | exclusive_consumer_tag |     idle_since      | memory | messages | messages_ready | messages_unacknowledged |        node         | policy | status  |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+
| /     | myqueue  | False       | 0         | True    |                        | 2014-09-10 13:32:18 | 13760  | 0        | 0              | 0                       |rabbit@ip-11-1-52-125|        | running |
+-------+----------+-------------+-----------+---------+------------------------+---------------------+--------+----------+----------------+-------------------------+---------------------+--------+---------+

myqueue에 몇 가지 항목을 넣습니다.

curl -i -u guest:guest http://localhost:15672/api/exchanges/%2f/kowalski/publish -d '{"properties":{},"routing_key":"abcxyz","payload":"foobar","payload_encoding":"string"}'
HTTP/1.1 200 OK
Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact)
Date: Wed, 10 Sep 2014 17:46:59 GMT
content-type: application/json
Content-Length: 15
Cache-Control: no-cache

{"routed":true}

RabbitMQ는 대기열에서 메시지를 봅니다.

eric@dev ~ $ sudo python rabbitmqadmin get queue=myqueue requeue=true count=10
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count |                        payload        | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+
| abcxyz      | kowalski | 10            | foobar                                | 6             | string           |            | True        |
| abcxyz      | kowalski | 9             | {'testdata':'test'}                   | 19            | string           |            | True        |
| abcxyz      | kowalski | 8             | {'mykey':'myvalue'}                   | 19            | string           |            | True        |
| abcxyz      | kowalski | 7             | {'mykey':'myvalue'}                   | 19            | string           |            | True        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+


답변

나는 rabbitmq-dump-queue를 썼다.RabbitMQ 큐에서 로컬 파일로 메시지를 덤프하고 메시지를 원래 순서대로 다시 큐에 넣을 수있는 를 .

사용 예 (queue의 처음 50 개 메시지 덤프 incoming_1) :

rabbitmq-dump-queue -url="amqp://user:password@rabbitmq.example.com:5672/" -queue=incoming_1 -max-messages=50 -output-dir=/tmp


답변

RabbitMQ API를 사용하여 개수 또는 메시지를 가져올 수 있습니다.

/api/queues/vhost/name/get

대기열에서 메시지를 가져옵니다. (이것은 큐의 상태를 변경하므로 HTTP GET이 아닙니다.) 다음과 같은 본문을 게시해야합니다.

{"count":5,"requeue":true,"encoding":"auto","truncate":50000}

count는 가져올 최대 메시지 수를 제어합니다. 큐에서 즉시 제공 할 수없는 경우 이보다 적은 메시지를받을 수 있습니다.

requeue는 메시지를 큐에서 제거할지 여부를 결정합니다. requeue가 true이면 다시 대기열에 추가되지만 redeliivered 플래그가 설정됩니다. 인코딩은 “auto”(유효한 UTF-8이면 페이로드가 문자열로 반환되고 그렇지 않으면 base64로 인코딩 됨) 또는 “base64″(이 경우 페이로드는 항상 base64로 인코딩 됨) 여야합니다. truncate가있는 경우 주어진 크기 (바이트)보다 크면 메시지 페이로드를 자릅니다. 자르기는 선택 사항입니다. 다른 모든 키는 필수입니다.

HTTP API의 게시 / 가져 오기 경로는 테스트 메시지, 진단 등을 주입하기위한 것입니다. 신뢰할 수있는 전달을 구현하지 않으므로 메시징을위한 일반 API가 아닌 시스템 관리자의 도구로 취급해야합니다.

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_1_3/priv/www/api/index.html


답변

이것에 조금 늦었지만 네 rabbitmq에는 로그에서 들어오는 메시지를 볼 수있는 추적 프로그램이 있습니다. 활성화되면 tail -f /var/tmp/rabbitmq-tracing/.log(Mac에서) 메시지를 볼 수 있습니다.

자세한 설명은 여기 http://www.mikeobrien.net/blog/tracing-rabbitmq-messages


답변

대기열에서 여러 메시지 (예 : 10 개의 메시지)를 원할 경우 사용할 명령은 다음과 같습니다.

rabbitmqadmin get queue=<QueueName> ackmode=ack_requeue_true count=10

메시지를 다시 대기열에 넣지 않으려면로 변경 ackmode하십시오 ack_requeue_false.


답변