rocketMq学习记录
一、下载rocketMq
二进制下载:
http://rocketmq.apache.org/release_notes/release-notes-4.4.0/
因为rocketMq是基于java的,所以无需安装,解压即可用。
参考:http://rocketmq.apache.org/docs/quick-start/
二、启动nameServer
nohup sh bin/mqnamesrv &
值得注意的是,上述命令默认启动,占用的内存会比较大,我是虚拟机,没有太多内存,所以可以调节内存占用大小再启动:
vim bin/runserver.sh
1 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn192m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
启动是否成功,可以jps查看,另外,也可以ss -lnt看看 9876 端口是否启动。(nameServer的默认端口)
三、启动broker
同样,需要调节内存:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn192m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
注意,下面的语句和官网不同,要加上:autoCreateTopicEnable=true,不然很多官网实例会报错:
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
四、官方demo异步消息发送失败
1、有可能是客户端和服务端版本不匹配;比如,服务端为4.4.0,则客户端也应该采用相同版本。
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.4.0</version> </dependency>
2、官方demo代码有问题
参考:https://blog.csdn.net/q1009020096/article/details/84543422
3、broker上多个ip,发送者使用了错误的ip的问题
首先查看注册到nameServer的broker的信息,
bin/mqadmin clusterList -n 127.0.0.1:9876
但是这里的ip并不是我服务器的真实对外ip,因为我这里有多个网卡,因此需要手动指定ip地址:
echo "brokerIP1=192.168.58.131" > conf/broker.properties sh bin/mqshutdown broker nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true -c conf/broker.properties &
上面的重点,主要是 -c 来指定配置文件。
五、admin web控制台
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
我是基于docker装的,镜像太大了,700多M,需要一点耐心。
docker启动时,容器内部端口默认是8080,如果宿主机也用8080的话(-p 8080:8080),可以改成(-p 8081:8080),要注意端口占用问题。
貌似也可以直接拉war包下来,应该会快一点。
参考资料: