简介

本文记录如果为 RabbitMQ 开启消息历史记录。基于 RabbitMQ 消息队列作应用开发的时候,难免会需要追查 RabbitMQ 服务中发送的消息详细信息。通过开启消息记录,将会为开发带来很大的便利。

打开 RabbitMQ 消息历史记录

RabbitMQ 服务自带有一个管理界面,我们只需要开启它。

  • 打开管理插件

    在安装有 RabbitMQ 服务的节点上,执行命令 rabbitmq-plugins enable rabbitmq_management
    然后重启 RabbitMQ 服务使更改生效。
    这时访问本机的 15672 端口,即可看到 RabbitMQ 的管理界面:
    management ui

    登录管理界面,需要帐户有特殊权限,通常使用 rabbitmqctl set_user_tags administrator 来打开访问管理界面的权限

    管理界面中包含了 RabbitMQ 集群中的连接、队列、交换机等的可视化信息。这些信息通过 rabbitmqtl 同样可以获取到。

  • 打开 firehose

    firehose 是 RabbitMQ 提供的记录往来消息的插件,同样需要打开。
    命令 rabbitmq-plugins enable rabbitmq_tracing
    重启 RabbitMQ 服务使更改生效。

    此时前往 RabbitMQ 管理界面,可以看到在 Admin 标签之下多出了一个栏目 “Tracing”,可参见上图。

  • 消息记录开关

    单纯只是打开 firehose 并不能就获取到消息的记录,由于记录 RabbitMQ 中传递的消息将会影响于性能。所以默认 RabbitMQ 不会打开该功能。要打开,需要执行命令:
    rabbitmqctl trace_on
    同样,如果不再使用消息历史记录,使用如下命令关闭:
    rabbitmqctl trace_off

  • 查看消息记录

    在 RabbitMQ 管理界面 Admin 标签下,打开 Tracing 栏目。要查看消息需要新建一个 Trace,
    点击”Add a new trace”,设置一个名称 “all”,表达式中设置 “#”,点击添加。
    add a new trace

    表达式 “#” 意为把所有的消息都记录下来,你可以设置只记录某一个队列或交换机上的消息,如 “#.myqueue”,或者 “#.myexchange”

    添加之后,可以在 All traces 栏目下,看到新建的 trace。右侧为消息历史记录的文件,打开即可看到 RabbitMQ 中传递的消息历史记录。

参考链接

https://www.rabbitmq.com/blog/2011/09/09/rabbitmq-tracing-a-ui-for-the-firehose/
https://www.rabbitmq.com/firehose.html
https://www.rabbitmq.com/management.html