作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实!

阶段1、深入多线程

阶段2、深入多线程设计模式

阶段3、深入juc源码解析


阶段4、深入jdk其余源码解析


阶段5、深入jvm源码解析

码哥源码部分

码哥讲源码-原理源码篇【2024年最新大厂关于线程池使用的场景题】

码哥讲源码【炸雷啦!炸雷啦!黄光头他终于跑路啦!】

码哥讲源码-【jvm课程前置知识及c/c++调试环境搭建】

​​​​​​码哥讲源码-原理源码篇【揭秘join方法的唤醒本质上决定于jvm的底层析构函数】

码哥源码-原理源码篇【Doug Lea为什么要将成员变量赋值给局部变量后再操作?】

码哥讲源码【你水不是你的错,但是你胡说八道就是你不对了!】

码哥讲源码【谁再说Spring不支持多线程事务,你给我抽他!】

终结B站没人能讲清楚红黑树的历史,不服等你来踢馆!

打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】

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

启动rabbitmq_tracing插件:
    [root@rabbit1 /]# rabbitmq-plugins enable rabbitmq_tracing
    Enabling plugins on node rabbit@rabbit1:
    rabbitmq_tracing
    The following plugins have been configured:
      rabbitmq_management
      rabbitmq_management_agent
      rabbitmq_tracing
      rabbitmq_web_dispatch
    Applying plugin configuration to rabbit@rabbit1...
    The following plugins have been enabled:
      rabbitmq_tracing
    
    started 1 plugins.
对应关闭rabbitmq_tracing插件指令是:
    [root@rabbit1 /]# rabbitmq-plugins disable rabbitmq_tracing
    Disabling plugins on node rabbit@rabbit1:
    rabbitmq_tracing
    The following plugins have been configured:
      rabbitmq_management
      rabbitmq_management_agent
      rabbitmq_web_dispatch
    Applying plugin configuration to rabbit@rabbit1...
    The following plugins have been disabled:
      rabbitmq_tracing
    
    stopped 1 plugins.
启动rabbitmq_tracing插件后,在web管理界面Admin右侧会多出一个Tracing选项:

可以在此Tab项中添加相应的trace,如上图所示;在添加完成trace之后,会根据匹配规则将相应的日志输出到对应的trace文件中,文件的默认路径是/var/tmp/rabbitmq-tracing,可以在页面中直接点击Trace log files查看追踪到的消息,如下图:

我们添加了两个trace任务,与之对应的有两个trace文件,可以通过trace文件追踪消息的流入和流出情况;

队列

在添加完成两个trace任务后,会发现多了两个队列,如下图:

就以第一个队列amq.gen-K1qSTxD4k3z8aLWMEn5Z3w而言,其所绑定的交换器就是amq.rabbitmq.trace,如下图所示:

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

新增trace时参数含义
  • Name:即将创建的trace的名称

  • Format:表示输出消息日志的格式,有Text和JSON两种,Text格式方便人类阅读,JSON格式方便程序解析

  • Max payload bytes:表示每条消息的最大限制,单位为B。比如设置了此值为10,那么当有超过10B的消息经过RabbitMQ流转时就会被载断,如:trace test payload会被载断成trace test.

  • Pattern用来设置匹配的模式,和Firehose类似,详解如下:

    "publish.#"匹配发送至所有交换器的消息

    “deliver.#"匹配消费所有队列的消息

    “#”包含“publish.#“和“deliver.#”

    "publish.test_exchange"匹配发送到指定交换器的消息

    “deliver.test_queue"匹配消费指定队列的消息

更多推荐