实际项目中有时会遇到消息丢失问题,订阅方反馈没订阅到,发送方反馈已经发送了。需要直接在RabbitMQ中看数据,这时可以采用RabbitMQ 的trace插件进行消息查看。
首先需要进入rabbitmq安装目录:
确认rabbitmqctl正常
[root@master rabbitmq]# rabbitmqctl statusStatus of node rabbit@master ...[{pid,11428},{running_applications,[{rabbitmq_management,"RabbitMQ Management Console","3.3.5"},{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.3.5"},{webmachine,"webmachine","1.10.3-rmq3.3.5-gite9359c7"},{mochiweb,"MochiMedia Web Server","2.7.0-rmq3.3.5-git680dba8"},{rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},{rabbit,"RabbitMQ","3.3.5"},{mnesia,"MNESIA CXC 138 12","4.11"},{os_mon,"CPO CXC 138 46","2.2.14"},{inets,"INETS CXC 138 49","5.9.8"},{amqp_client,"RabbitMQ AMQP Client","3.3.5"},{xmerl,"XML parser","1.3.6"},{sasl,"SASL CXC 138 11","2.3.4"},{stdlib,"ERTS CXC 138 10","1.19.4"},{kernel,"ERTS CXC 138 10","2.16.4"}]},{os,{unix,linux}},{erlang_version,"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [async-threads:30] [hipe] [kernel-poll:true]\n"},{memory,[{total,40801504},{connection_procs,5440},{queue_procs,33376},{plugins,317304},{other_proc,13339840},{mnesia,68096},{mgmt_db,154440},{msg_index,70464},{other_ets,1251400},{binary,829760},{code,20232316},{atom,711569},{other_system,3787499}]},{alarms,[]},{listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},{vm_memory_high_watermark,0.4},{vm_memory_limit,407832166},{disk_free_limit,50000000},{disk_free,45208797184},{file_descriptors,[{total_limit,924},{total_used,3},{sockets_limit,829},{sockets_used,1}]},{processes,[{limit,1048576},{used,181}]},{run_queue,0},{uptime,39026}]...done.
查看rabbitmq支持的插件列表
[root@master rabbitmq]# rabbitmq-plugins list[e] amqp_client 3.3.5[ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d[ ] eldap 3.3.5-gite309de4[e] mochiweb 2.7.0-rmq3.3.5-git680dba8[ ] rabbitmq_amqp1_0 3.3.5[ ] rabbitmq_auth_backend_ldap 3.3.5[ ] rabbitmq_auth_mechanism_ssl 3.3.5[ ] rabbitmq_consistent_hash_exchange 3.3.5[ ] rabbitmq_federation 3.3.5[ ] rabbitmq_federation_management 3.3.5[E] rabbitmq_management 3.3.5[e] rabbitmq_management_agent 3.3.5[ ] rabbitmq_management_visualiser 3.3.5[ ] rabbitmq_mqtt 3.3.5[ ] rabbitmq_shovel 3.3.5[ ] rabbitmq_shovel_management 3.3.5[ ] rabbitmq_stomp 3.3.5[ ] rabbitmq_test 3.3.5[ ] rabbitmq_tracing 3.3.5[e] rabbitmq_web_dispatch 3.3.5[ ] rabbitmq_web_stomp 3.3.5[ ] rabbitmq_web_stomp_examples 3.3.5[ ] sockjs 0.3.4-rmq3.3.5-git3132eb9[e] webmachine 1.10.3-rmq3.3.5-gite9359c7
启用trace插件
[root@master rabbitmq]# rabbitmq-plugins enable rabbitmq_tracingThe following plugins have been enabled:rabbitmq_tracingPlugin configuration has changed. Restart RabbitMQ for changes to take effect.
启用trace功能
[root@master rabbitmq]# rabbitmqctl trace_onStarting tracing for vhost "/" ......done.
重启rabbitmq
systemctl stop rabbitmq-server.servicesystemctl start rabbitmq-server.service
登录rabbitmq客户端
查看trace是否已启用
进入Admin模块,查看trace已存在,表示trace启用成功
进入Exchange模块,查看trace启用后,有增加对应topic
添加trace
输入trace名称,format类型,Pattern,添加trace,注意:publish.# (接入),deliver.#(接出) ,#.amq.directueue(指定交换机), #.myqueue(指定一个Queue)
trace日志查看
指定对应的规则,比如打印某个queue的消息日志
点击右侧日志名查看日志详情,在详情中可以查看消息报文
关闭trace,禁用trace plugin
在定位问题完毕后,记得删除对应的trace和log信息,禁用trace
关闭trace,输入:./rabbitmqctl trace_off
禁用trace,输入:./rabbitmq-plugins disable rabbitmq_tracing
确认是否禁用成功
如果禁用成功,查看Admin页面已经没有Tracing 列
