一、什么是Trace
Trace是Rabbitmq用於記錄每一次發送的消息,方便使用Rabbitmq的開發者調試、排錯。可通過插件形式提供可視化界面
二、Trace實現概況
1、Trace啟動后會自動創建系統Exchange:amq.rabbitmq.trace
2、每個隊列會自動綁定該Exchange,綁定后發送到隊列的消息都會記錄到Trace日志
三、怎樣使用Trace
2、啟動Trace插件
a) 列出本機已安裝的插件:rabbitmq-plugins list(請先定位到Rabbitmq服務安裝目錄)
b) 啟動Trace插件:rabbitmqctl trace_on (關閉Trace:rabbitmqctl trace_off)
3、查看捕獲到的Trace信息
a) Management插件-->Admin-->Trace
b) 新增Trace,格式分別是Text(方便人類閱讀)、Json(方便機器識別)
c) 發送消息,查看Trace攔截的信

d) 查看日志信息 (單擊日志文件打開,這里是MyTrace.log)
三、總結
1、Rabbitmq的資料比較少,建議大家還是多看官方文檔
2、Trace主要通過插件方式提供
3、Trace日志文件地址:C:\var\tmp\rabbitmq-tracing\MyTrace.log
四、Rabbitmq啟用日志功能記錄消息隊列收發情況
1、啟用日志插件命令
rabbitmq-plugins enable rabbitmq_tracing
2、到管理界面添加tracing
點擊“Admin”菜單,右邊會多出一個“Tracing”的菜單,填寫Name、Format、Max payload bytes、Pattern 然后點擊“添加Add trace”即可添加一個日志
Name:自定義,建議標准點容易區分
Format:表示輸出的消息日志格式,有Text和JSON兩種,Text格式的日志方便人類閱讀,JSON的方便程序解析。
JSON格式的payload(消息體)默認會采用Base64進行編碼,如上面的“trace test payload.”會被編碼成“dHJhY2UgdGVzdCBwYXlsb2FkLg==”。
Max payload bytes:表示每條消息的最大限制,單位為B。比如設置了了此值為10,那么當有超過10B的消息經過Rabbit MQ流轉時,在記錄到trace文件的時候會被截斷。
如上text日志格式中“trace test payload.”會被截斷成“trace test”。
Pattern:用來設置匹配的模式,和Firehose的類似。如“#”匹配所有消息流入流出的情況,即當有客戶端生產消息或者消費消息的時候,會把相應的消息日志都記錄下來;
“publish.#”匹配所有消息流入的情況;“deliver.#”匹配所有消息流出的情況;“publish.exchange.b2b.gms.ass”只匹配發送者(Exchanges)為exchange.b2b.gms.ass的所有消息流入的情況。