【漫步RocketMQ】RocketMQ 之helloworld

本文档详细介绍了如何在Linux环境下编译安装Apache RocketMQ 4.6.1版本,包括从GitHub下载源码、安装Maven、配置阿里云镜像、修改启动脚本内存分配等步骤,并提供了启动、测试及关闭服务的流程。同时,针对启动过程中的常见错误,如连接错误、内存分配问题和主机名解析失败,给出了相应的解决方案。最后,简述了rocketmq-console的下载、编译和启动过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RocketMQ 01

主要内容:

  • 编译安装
  • HelloWorld

官方网站

http://rocketmq.apache.org

GitHub

https://github.com/apache/rocketmq

各个版本

https://rocketmq.apache.org/dowloading/releases/

Quick Start

Linux下使用Maven编译源码安装

Rocketmq4.6+需要jdk1.8环境编译和运行

各版本要求

VersionClientBrokerNameServer
4.0.0-incubating>=1.7>=1.8>=1.8
4.1.0-incubating>=1.6>=1.8>=1.8
4.2.0>=1.6>=1.8>=1.8
4.3.x>=1.6>=1.8>=1.8
4.4.x>=1.6>=1.8>=1.8
4.5.x>=1.6>=1.8>=1.8
4.6.x>=1.6>=1.8>=1.8
1.从GitHub上下载源码并上传到服务器(admin账号)

在这里插入图片描述

2.在Linux上安装Maven(root账号)

下载Maven

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
//解压
tar -zxvf xxxx
//换个名字
mv xxxx maven

添加阿里云镜像

修改maven/conf目录下的settings.xml

mirrors节点下添加,wq保存退出

<mirror> 
    <id>aliyun-maven</id> 
    <mirrorOf>*</mirrorOf> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
</mirror>

配置maven环境变量

修改vi /etc/profile

export M2_HOME=/opt/maven
export PATH=$PATH:$M2_HOME/bin

环境变量修完执行source /etc/profile立即生效

进入rocketmq主目录编译项目(admin账号)

mvn -Prelease-all -DskipTests clean install -U
解压后将编译后的项目移动到/home/admin
ps:解压后路径 /home/admin/rocketmq-all-4.6.1-source-release/openmessaging/target/rocketmq-4.6.1
3.修改启动脚本内存分配

修改启动脚本中的jvm参数

runbroker.sh broker

runserver.sh nameserver

默认数值给的都很大,改小即可

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=100m"
4.启动nameserver

bin目录下执行

nohup sh mqnamesrv &

正常提示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0s5y0O37-1629286867474)(image-rocketMQ/image-20200218150050167.png)]

5.启动Broker
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true > ~/logs/rocketmqlogs/broker.log 2>&1 &

正常提示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qJA7Xmun-1629286867475)(image-rocketMQ/image-20200218150114714.png)]

6.测试消息发送

使用tool.sh脚本执行测试程序

tools脚本中添加

export NAMESRV_ADDR=localhost:9876

bin目录下执行

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

提示如下表示成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uwaL9Ub6-1629286867477)(image-rocketMQ/image-20200218145049603.png)]

7.接受消息

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

8.关闭服务

关闭namesrv服务:./mqshutdown namesrv
关闭broker服务 :./mqshutdown broker

控制台rocketmq-console编译安装

下载

https://github.com/apache/rocketmq-externals

中文指南

https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md

上传到服务器并解压缩
编译

进入rocketmq-console目录

修改application.properties内端口

执行编译

mvn clean package -Dmaven.test.skip=true
启动

编译成功后在rocketmq-console/target目录下执行rocketmq-console-ng-1.0.1.jar

启动时,直接动态添加nameserver地址或编辑application.properties添加属性

nohup java -jar rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr=127.0.0.1:9876 > ~/logs/consolelogs/consolelogs.log 2>&1 &

启动成功后访问服务器所配端口即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XlGfDkxr-1629286867479)(image-rocketMQ/image-20200218155021928.png)]

pom.xml依赖
 <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.6.1</version>
 </dependency>

安装启动常见错误

编译时包无法在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 framework
RocketMQLog: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 broker

runserver.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.<init>(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 localh
ost:9876

**原因:**无法解析当前的主机名

hosts里添加映射即可

xxx.xxx.xxx.xx 主机名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值