zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

RabbitMQ消息追踪之rabbitmq_tracing

2023-09-27 14:29:21 时间

rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的流入流出情况。rabbitmq_tracing插件同样会对流入流出的消息做封装,然后将封装后的消息日志存入相应的trace文件之中。

可以使用rabbitmq-plugins enable rabbitmq_tracing命令来启动rabbitmq_tracing插件。

[root@node3 opt]# rabbitmq-plugins enable rabbitmq_tracing

The following plugins have been enabled:

 rabbitmq_tracing

Applying plugin configuration to rabbit@node3... started 1 plugin.

对应的关闭插件的命令是:rabbitmq-plugins disable rabbitmq_tracing。

在Web管理界面 “Admin”右侧原本只有”Users”、”Virtual Hosts”以及”Policies“这个三Tab项,在添加rabbitmq_tracing插件之后,会多出”Tracing”这一项内容:
这里写图片描述

可以在此Tab项中添加相应的trace:
这里写图片描述

在添加完trace之后,会根据匹配的规则将相应的消息日志输出到对应的trace文件之中,文件的默认路径为/var/tmp/rabbitmq-tracing。可以在页面中直接点击“Trace log files”下面的列表直接查看对应的日志文件。

如下图,我们添加了两个trace任务。
这里写图片描述
与其相对应的trace文件如下:
这里写图片描述
再添加完相应的trace任务之后,会发现多了两个队列:
这里写图片描述
就以第一个队列amq.gen-MoyvSKQau9udetl4lUdQZw而言,其所绑定的交换器就是amq.rabbitmq.log。
这里写图片描述

由此可以看出整个rabbitmq_tracing和Firehose在实现上如出一辙,只不过rabbitmq_tracing的方式比Firehose多了一层GUI的包装,更容易使用和管理。

再来补充说明上图中“Name”,“Format”,“Max payload bytes”,”Pattern”的具体含义。“Name”,顾名思义,就是为你所要即将创建的trace任务取个名称。

“Format”表示输出的消息日志格式,有Text和JSON两种,Text格式的日志方便人类阅读,JSON的方便程序解析。
Text格式的消息日志参考如下:

================================================================================

2017-10-24 9:37:04:412: Message published

Node: rabbit@node1

Connection: rabbit@node1.3.3552.0 

Virtual host: /

User: root

Channel: 1

Exchange: exchange

Routing keys: [ "rk" ]

Routed queues: [ "queue" ]

Properties: [{ "delivery_mode" ,signedint,1},{ "headers" ,table,[]}]

Payload: 

trace test payload.

JSON格式的消息日志参考如下:


JSON格式的payload(消息体)默认会采用Base64进行编码,如上面的“trace test payload.”会被编码成“dHJhY2UgdGVzdCBwYXlsb2FkLg==”。

“Max payload bytes”表示每条消息的最大限制,单位为B。比如设置了了此值为10,那么当有超过10B的消息经过RabbitMQ流转时,在记录到trace文件的时候会被截断。如上text日志格式中“trace test payload.”会被截断成“trace test”。

“Pattern”用来设置匹配的模式,和Firehose的类似。如“#”匹配所有消息流入流出的情况,即当有客户端生产消息或者消费消息的时候,会把相应的消息日志都记录下来;“publish.#”匹配所有消息流入的情况;“deliver.#”匹配所有消息流出的情况。


springcloud:springboot整合RabbitMQ|RabbitMQ保证消息可靠性(三) 上一章我们讲解了rabbitmq的四种交换机类型、七种通讯方式。本章我们将整合springboot来向大家完整演示rabbitmq的使用,并说明如何保证消息的可靠性。