搜索
您的当前位置:首页正文

RocketMq安装与启动

来源:六九路网
RocketMq安装与启动

官⽅⽹站GitHub在Linux上安装Maven下载Maven

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

添加阿⾥云镜像

修改maven/conf⽬录下的settings.xml在mirrors节点下添加

aliyun-maven *

aliyun maven

http://maven.aliyun.com/nexus/content/groups/public

配置maven环境变量

修改/etc/profile

export M2_HOME=/usr/local/mavenexport PATH=$PATH:$M2_HOME/bin

配置java环境变量

export JAVA_HOME=\"/usr/java/jdk1.8.0_181-amd64\"export CLASS_PATH=\"$JAVA_HOME/lib\"export PATH=\".$PATH:$JAVA_HOME/bin\"

环境变量修完执⾏source /etc/profile⽴即⽣效

查看java安装⽬录所有类安装所在⽬录

java -verbose

查看JAVA_HOME

echo $JAVA_HOME

Linux下使⽤Maven编译Rocket源码并安装Rocketmq4.6+需要jdk1.8环境编译和运⾏

下载源码包解压包并编译源码

unzip rocketmq-all-4.6.1-source-release.zip

移动⽂件到指定⽬录/usr/local/下

mv rocketmq-all-4.6.1-source-release/ /usr/local/rocketmq-all-4.6.1/

切换到/usr/local/rocketmq-all-4.6.1/⽬录下

cd /usr/local/rocketmq-all-4.6.1/

执⾏meaven编译源码命令

mvn -Prelease-all -DskipTests clean install -U

找到编译后的⽂件

cd distribution/target/rocketmq-4.6.1/

移动编译后的⽂件到指定⽬录下

mv rocketmq-4.6.1/ /usr/local/rocketmq-4.6.1/

切换到/usr/local/rocketmq-4.6.1/bin/⽬录下

cd /usr/local/rocketmq-4.6.1/bin/

创建⽇志⽂件夹

mkdir /usr/local/rocketmq-4.6.1/mylog/rocketmqlogs/

Start Name Server(注册中⼼)

nohup sh ./mqnamesrv > /usr/local/rocketmq-4.6.1/mylog/rocketmqlogs/namesrv.log &

查看⽇志

tail -f /usr/local/rocketmq-4.6.1/mylog/rocketmqlogs/namesrv.log# 启动成功标志

# The Name Server boot success. serializeType=JSON

Start Broker(具体服务)

# -n localhost:9876指定对应的namesrv

nohup sh ./mqbroker -n localhost:9876 > /usr/local/rocketmq-4.6.1/mylog/rocketmqlogs/mqbroker.log &

# 执⾏出错

# Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot # # allocate memory' (errno=12)# 可以看出是分配的内存不够⽤

原来,执⾏./mqbroker其实是执⾏./runbroker.sh查看./runserver.sh和./runbroker.sh启动时分配的内存

# runserver.sh

JAVA_OPT=\"${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m\"# runbroker.sh

JAVA_OPT=\"${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g\"

发现 runbroker.sh 分配的内存过⼤修改启动时分配的内存

# runbroker.sh

JAVA_OPT=\"${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m\"

重新启动./mqbroker

查看⽇志

tail -f /usr/local/rocketmq-4.6.1/mylog/rocketmqlogs/mqbroker.log# 启动成功标志

# The broker[dandanRoot, 192.168.1.113:10911] boot success. serializeType=JSON

发现执⾏成功

可能出现的另⼀个错误

找不到 host name,此时需要在 /etc/hosts 中配置对应的host

Send & Receive Messages(测试)

在/tools.sh中添加配置

export NAMESRV_ADDR=localhost:9876

执⾏测试脚本

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer# 出现错误

# org.apache.rocketmq.client.exception.MQClientException: No route info of this topic: TopicTest# 启动./mqbroker时要带上参数 -n localhost:9876,不然连不到注册中⼼ namesrv# 重新启动

# nohup sh ./mqbroker -n localhost:9876 > /usr/local/rocketmq-4.6.1/mylog/rocketmqlogs/mqbroker.log &# 发送消息成功

# SendResult [sendStatus=SEND_OK, msgId=C0A8017C00006BC7C0546460AEE203E7, offsetMsgId=C0A8017100002A9F00000000000317BF, messageQueue=MessageQueue [topic=TopicTest, brokerName=dandanRoot, queueId=2], queueO

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer# 接收消息成功

# ConsumeMessageThread_9 Receive New Messages: [MessageExt [queueId=3, storeSize=203, queueOffset=200, sysFlag=0, bornTimestamp=1637380057502, bornHost=/192.168.1.113:36340, storeTimestamp=1637380057502, storeHost=/1

Shutdown Servers

sh bin/mqshutdown brokersh bin/mqshutdown namesrv

控制台rocketmq-console编译安装下载

得到安装包 rocketmq-externals-master.zip

中⽂指南

上传到服务器并解压缩

unzip rocketmq-externals-master.zip

得到 rocketmq-externals-master

编译

进⼊rocketmq-console⽬录执⾏编译

mvn clean package -Dmaven.test.skip=true

启动

编译成功后在rocketmq-console/target⽬录下执⾏rocketmq-console-ng-1.0.1.jar启动时,直接动态添加nameserver地址或编辑application.properties添加属性

java -jar rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr=127.0.0.1:9876

启动成功后访问服务器8080端⼝即可

添加--rocketmq.config.namesrvAddr=127.0.0.1:9876命令的替代⽅案,在console的页⾯中,在opt的NameSvrAddrList中添加192.168.1.113:9876,按enter键,按UPDATE按钮即可

pom.xml依赖

org.apache.rocketmq rocketmq-client 4.6.1

安装启动常见错误

编译时包⽆法在mirror上找到 提⽰502错误

原因:⽹络不好或maven仓库服务器出错重试即可,或者欢迎镜像仓库

发送失败提⽰connect to null failed

./tools.sh org.apache.rocketmq.example.quickstart.Producer

22:49:02.470 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging frameworkRocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).RocketMQLog:WARN Please initialize the logger system properly.

java.lang.IllegalStateException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed

原因:不知道nameserver在哪⼉在tools脚本中添加

export NAMESRV_ADDR=localhost:9876

启动broker失败 Cannot allocate memory

原因:jvm启动初始化内存分配⼤于物理内存

[root@node-113b bin]# ./mqbroker -n localhost:9876

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)#

# There is insufficient memory for the Java Runtime Environment to continue.

# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.# An error report file with more information is saved as:# /usr/local/rocketmq/bin/hs_err_pid1997.log

修改启动脚本中的jvm参数

runbroker.sh brokerrunserver.sh nameserver

默认数值给的都很⼤,改⼩即可

JAVA_OPT=\"${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=100m\"

启动broker成功但提⽰:Failed to obtain the host name

[root@node-113b bin]# ./mqbroker -n localhost:9876

22:30:42.307 [main] ERROR RocketmqCommon - Failed to obtain the host name

java.net.UnknownHostException: node-113b: node-113b: No address associated with hostname at java.net.InetAddress.getLocalHost(InetAddress.java:1505) ~[na:1.8.0_181]

at org.apache.rocketmq.common.BrokerConfig.localHostName(BrokerConfig.java:189) [rocketmq-common-4.6

.1.jar:4.6.1] at org.apache.rocketmq.common.BrokerConfig.(BrokerConfig.java:38) [rocketmq-common-4.6.1.jar:4.6.1] at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:110) [rocketmq

-broker-4.6.1.jar:4.6.1] at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.6.1.jar:4.6.1]Caused by: java.net.UnknownHostException: node-113b: No address associated with hostname at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_181] at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[na:1.8.0_181]

at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[na:1.8.0_181] at java.net.InetAddress.getLocalHost(InetAddress.java:1500) ~[na:1.8.0_181] ... 4 common frames omitted

The broker[DEFAULT_BROKER, 192.168.150.213:10911] boot success. serializeType=JSON and name server is localhost:9876

原因:⽆法解析当前的主机名hosts⾥添加映射即可

192.168.150.213 node-113b

错误:Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 172.17.0.1:10911 failed

# 外⽹连接不到指定ip在broker.conf中配置

brokerIP1=192.168.1.113

namesrvAddr=192.168.1.113:9876

# 关闭启动mqname服务

sh bin/mqshutdown namesrvnohup sh bin/mqnamesrv &

# 关闭启动mqbroker配置sh bin/mqshutdown broker

nohup sh bin/mqbroker -c conf/broker.conf &

参考⽂章:https://blog.csdn.net/qq_40202111/article/details/106668494https://blog.csdn.net/qq_40202111/article/details/106668494

控制台rocketmq-console编译安装docker版获取Docker镜像

docker pull styletang/rocketmq-console-ng

运⾏

docker run -e \"JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false\" -p 9080:8080 -t styletang/rocketmq-console-ng

访问

# 使⽤⾃⼰的ip

# 9080是远程访问的端⼝http://192.168.1.113:9080/

linux⽇期校准安装ntpdate

yum install ntpdatentpdate ntp1.aliyun.com

因篇幅问题不能全部显示,请点此查看更多更全内容

Top