RocketMQ
NameServer
NameServer是一个Broker与Topic路由的注册中心,支持Broker的动态注册与发现。主要包括两个功能:
Broker管理:接受Broker集群的注册信息并且保存下来作为路由信息的基本数据;提供心跳检测机制,检查Broker是否还存活。
路由信息管理:每个NameServer中都保存着Broker集群的整个路由信息和用于客户端查询的队列信息,Producer和Consumer通过NameServer可以获取整个Broker集群的路由信息,从而进行消息的投递和消费。
启动RocketMQ
切换到rocketmq目录
cd /home/lyl/rocketmq-5.1.0/启动NameServer
### 启动namesrv
nohup sh bin/mqnamesrv &
### 验证namesrv是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...启动失败请参考遇到的问题章节
启动Broker+Proxy
### 先启动broker
nohup sh bin/mqbroker -n localhost:9876 &
### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
tail -f ~/logs/rocketmqlogs/proxy.log
The broker[broker-a,192.169.1.2:10911] boot success...工具测试消息收发
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...RockMQ控制台
从github中下载rocketmq-externals,解压。
项目是sprintboot工程,进入配置文件目录,修改配置文件,修改项目端口号,增加namesrv地址
在pom文件中增加JAXB依赖(用于XML绑定Java的技术,可以根据XML Schema生成Java类的技术)
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>SDK测试消息收发
引入Maven依赖
<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client-java -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>5.0.4</version>
</dependency>通过mqadmin创建topic
$ sh bin/mqadmin updatetopic -n localhost:9876 -t Logtopic -c DefaultCluster订阅关系一致
订阅关系是RocketMQ领域模型中非常重要的环节,用于表达消费者消费信息的控制元数据。订阅关系一般是指,同一个消费者组下的所有消费者实例所订阅的Topic、Tag必须完全一致,如果订阅关系不一致,会导致消费信息紊乱,甚至消息丢失。
遇到的问题
问题一
正常启动NameServer报错 ignoring input and appending output to ‘nohup.out’
解决方式:
创建日志目录
/logs/mqnamesrv.log /logs/mqbroker.log
之后运行
nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy > logs/mqbroker.log 2>&1 &问题二
未检测到jps命令
解决方法
yum remove java*
yum install java-1.8.0-openjdk-devel.x86_64问题三
启动NameServer报内存不足
解决方法
修改bin/runbroker.sh、runserver.sh、tools.sh中的默认内存大小
具体参考Centos7.6安装RocketMQ4.9.2并配置
问题四
启动Broker的时候 提示绑定8080端口失败
解决办法
管他是谁在占用 直接 kill -9
问题五
在使用rocketmq-console的时候,pom中有两个插件导入不进去
解决办法
添加依赖之后再更新pom
问题六
使用rocketmq-console打包失败,提示jar注入失败之类的错误
解决办法
检查一下java版本,rocketmq-console默认使用的是JDK1.7,改成1.8,将使用的JDK统一改为1.8