为用户提供rabbitmq与我们的系统进行交互。为了便于用户接入,提供了demo展示如何用java接入rabbitmq。使用过程中用户要求demo中要打印出心跳日志。但是经过研究发现,amqp-client这个包中貌似没有在心跳收发的过程中打印任何日志。所以需要修改amqp-client的源码并重新编译打包。
本文介绍如何构建amqp-client的源码编译环境,如何修改代码。
准备编译环境
docker容器构建文件:https://gitee.com/forgot940629/rabbitmq-client-source-build
执行编译
参考:https://www.rabbitmq.com/client-libraries/build-java-client
按照官方文档下载代码,然后编译。除代码之外,其他编译环境所需软件(比如simplejson.py)已经部署在docker容器中。
编译成功输出如下
若可以正常编译,说明编译环境和源码没问题
修改代码
在编译环境和源码没问题的前提下,进行下一步——根据需求修改源码。
我的目的是在收发心跳时打印日志,修改步骤如下
com.rabbitmq.client.impl.AMQConnection#readFrame方法中添加心跳接收日志记录
com.rabbitmq.client.impl.HeartbeatSender添加引用,并开启这个类的日志功能
com.rabbitmq.client.impl.HeartbeatSender.HeartbeatRunnable#run添加心跳发送日志