- 源码下载
源码下载地址:
ssh:git@github.com:apache/rocketmq-externals.git
http:https://github.com/apache/rocketmq-externals.git
百度网盘:
链接:https://pan.baidu.com/s/1oojmZDuizJG3Y_bTxL92LQ
提取码:xv46 - 源码改造
将源码导入到IDEA开发工具,进行如下修改:
2.1修改application.properties文件
server.port=17890(第一处修改)
rocketmq.config.namesrvAddr=192.168.8.9:9876(第二处修改)
server.port程序运行端口根据自己喜好设置和别的应用程序的端口不冲突即可
rocketmq.config.namesrvAddr为虚拟机中ip和rocketmq运行端口
2.2修改依赖
2.2.1找到 <rocketmq.version>4.4.0</rocketmq.version> 修改为:
<rocketmq.version>4.5.1</rocketmq.version>
2.2.2 找到 maven-checkstyle-plugin插件,将此插件注释掉,不然打包时会报错
2.3修改代码:
2.3.1找到如下代码:
org.apache.rocketmq.console.service.impl.MessageServiceImpl#queryMessageByTopic
将:
DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, rpcHook);
修改为:
RPCHook rpcHook = null;
DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, rpcHook);
2.3.2找到如下代码:
org.apache.rocketmq.console.service.impl.MonitorServiceImpl#loadData,在此方法中抛出IO异常,修改为如下代码:
2.3.3 修改org.apache.rocketmq.console.service.client.MQAdminExtImpl实现如下接口方法
@Override
public QueryConsumeQueueResponseBody queryConsumeQueue(String s, String s1, int i, long l, int i1, String s2) throws InterruptedException, RemotingTimeoutException, RemotingSendRequestException, RemotingConnectException, MQClientException {
return null;
}
2.3.4找到如下代码:org.apache.rocketmq.console.model.MessageView#fromMessageExt,在该方法中添加如下逻辑判断:
if(messageExt instanceof MessageClientExt){
MessageClientExt ext = (MessageClientExt) messageExt;
messageView.setMsgId(ext.getOffsetMsgId());
}
如果不修改此处代码,在控制台通过messageId 查询message明细是会报错,无法查询
3. 源码打包
在IDEA的Terminal窗口执行:mvn clean package -DskipTests,打包完成后通过:java -jar jar包名称运行即可
4. 控制台访问:
在浏览器输入:localhost:17890即可访问rocketmq-console控制台: