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


답변:


107

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

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

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


1
감사합니다. 이것은 기여할 ​​수 있습니다 : 기본적으로 rabbitmqadmin은 모든 곳에서 호출 될 수 없습니다. /var/lib/rabbitmq/mnesia/rabbit@NODENAME-plugins-expand/rabbitmq_management-3.1.3/priv/www/cli에 있습니다. 권한을 수정해야합니다 (chmod 755 rabbitmqadmin). / usr / local / bin에 복사 할 수 있습니다. rabbitmq.com/management-cli.html
Scherbius.com

아니요, 링크에서 다운로드하여 경로 어딘가에 넣어 액세스 할 수 있습니다.
robthewolf 2014

7
메시지를보기 requeue=falserabbitmqadmin get queue=<QueueName>
만하고

1
requeueing 메시지는 redelivery 플래그를 설정하므로 후속 소비자는 동일한 메시지를받지 못합니다
aKiRa

웹 인터페이스에서 메시지 내용을 볼 수 있습니까?
gstackoverflow

40

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

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        |
+-------------+----------+---------------+---------------------------------------+---------------+------------------+------------+-------------+

2
sudo python rabbitmqadmin get queue=myqueue requeue=true count=10메시지를 보거나 끝에서 메시지를 대기열에서 빼고 맨 앞으로 다시 대기열에 넣는 명령 입니다. 메시지를 빼는 대신 메시지를 볼 수있는 방법이 있습니까?
Akshay Hazari

get 및 requeue = true는 기본적으로 메시지가 대기열에서 제외되고 표시되고 다시 대기열에 있음을 알려줍니다 (pushed_back to front).
Akshay Hazari

1
으로 rabbitmqadmin웹 기반 API에 연결, sudo는 여기에 필요합니까?
Richlv

왜 그럴까요requeue=True
stephen

20

나는 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

10

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


4

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

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


3
링크가 끊어졌습니다. 거울 : web.archive.org/web/20160319074032/http://www.mikeobrien.net/... . 멋진 사용자 지정 오류 페이지 BTW :)
xtreak

0

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.