上一篇记录了RocketMq下载安装与启动:
本篇记录搭建RocketMq访问面板,是一个SringBoot项目,因此下载修改配置,启动即可。
因为RocketMq安装在阿里云上并非本地,因此也踩了不少坑,在此记录一下。
一、下载项目
建议先将项目fork到自己账号下,然后从自己账号通过git工具下载,这样修改了就可以提交。
(1) 访问rocketmq-externals项目
https://github.com/apache/rocketmq-externals
可以直接下载,建议先fork到自己账号
使用idea直接下载
但目前下载下来并无面板的代码,需要切换下分支
然后修改配置文件application.properties,将rocketmq.config.namesrvAddr设置为自己的RocketMq的nameserver访问地址即可启动,如localhost:9876
也可以直接访问console分支:https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0
(2) 访问rocketmq-dashboard项目
https://github.com/user-system/rocketmq-dashboard
下载修改application.yml中namesrvAddr即可启动访问
注:namesrvAddr也可以不修改,可以在登录面板运维处修改
二、访问效果
三、踩的坑
启动访问并未能达到预期效果,会有各种报错,遇到后一一处理
1、连接不上服务器9876端口
则需要在阿里云安全规则中添加规则,配置端口9876,也需要确保防火墙放行9876端口(可以在宝塔管理页面设置)
配置后可以连接RocketMq,但是还会报其他连接异常,需要添加开放以下端口:9876、10909、10911、10912
2、连接报错RemotingConnectException: connect to 172.17.0.1:10:109011
启动后定时任务持续报错:
java.lang.RuntimeException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 172.16.0.155:10911 failed
at com.google.common.base.Throwables.propagate(Throwables.java:160)
at org.apache.rocketmq.console.service.impl.ClusterServiceImpl.list(ClusterServiceImpl.java:63)
at org.apache.rocketmq.console.controller.ClusterController.list(ClusterController.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
...
解决方法:修改RocketMq安装目录下conf文件夹下的broker.conf文件,添加一行brokerIP1=<本机ip>,例如
brokerIP1=192.168.1.19
重启broker
# cd ../bin
# nohup sh mqbroker -n localhost:9876 -c ../conf/broker.conf &
3、修改rocketmq版本
如果需要或者避免兼容性问题,需要修改pom文件rocketmq版本号,以修改rocketmq-externals项目为例,本篇修改为
<rocketmq.version>4.9.4</rocketmq.version>
修改后编译会报错,报错一个个处理,基本上参数不对应、接口方法未实现、异常未抛出等,举例调整代码:
(1) 将
DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, null);
改为:
RPCHook rpcHook = null;
DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, rpcHook);
(2)添加参数
(3)添加抛异常,有多处,不一一举例了