安装包下载,版本:4.6.0
Rocketmq安装包下载地址
选择Binary包,下载之后,解压到合适的位置。
修改启动时分配的JVM大小
进入bin目录,vi runserver.sh,默认启动jvm分配4g的内存大小,有时候,机器配置比较低,就可以修改这里。
注意,目前这个版本不支持jdk10,建议最好使用jdk8
启动 Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
启动成功之后,可以在日志中看到监听的端口为:listenPort=9876
启动 Broker
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
tail -f ~/logs/rocketmqlogs/broker.log
其中autoCreateTopicEnable=true表示可以自动创建Topic,否则的话,如果在发送消息的时候,Topic不存在,就会报如下异常:
Caused by: org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, rocketmq-test-my-topic
See http://rocketmq.apache.org/docs/faq/ for further details.
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:656) ~[rocketmq-client-4.4.0.jar:4.4.0]
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1279) ~[rocketmq-client-4.4.0.jar:4.4.0]
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:301) ~[rocketmq-client-4.4.0.jar:4.4.0]
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:148) ~[rocketmq-spring-boot-2.0.2.jar:2.0.2]
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:123) ~[rocketmq-spring-boot-2.0.2.jar:2.0.2]
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:111) ~[rocketmq-spring-boot-2.0.2.jar:2.0.2]
手动创建Topic
比如创建一个名为rocketmq-test-my-topic的Topic,可以使用如下命令:
./mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t rocketmq-test-my-topic
-n后面是NameServer的地址,-b是broker的地址,-t是要创建的topic的名字。
也可以通过RocketMQ的管理页面创建,安装管理页面的步骤见:http://www.xinyues.com/h-nd-214.html#_jcp=4_47
创建topic如下图所示:
如果topic已存在,会更新topic,如果不存在,则新加topic,注意,操作成功的提示在右上角,这总让人感觉消息没有发出去。
设置自动创建topic
也可以设置让RocketMQ的服务自动创建Topic,在启动命令中添加参数autoCreateTopicEnable
./mqadmin updateTopic autoCreateTopicEnable=true -n localhost:9876 -b localhost:10911 -t rocketmq-test-my-topic
在连接RockatMQ时,不能使用localhost (有可能是我本地使用了vpn的原因)
我是在mac本上做的测试,如果是在本地启动的RocketMQ服务,在使用代码连接RocketMQ时,不能使用localhost:9876的方式,一定要使用IP地址的方式。要不然总是报找不到topic的异常:
Caused by: org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, rocketmq-test-my-topic
关闭RocketMQ服务
关闭namesrv : bin/mqshutdown namesrv
关闭broker : bin/mqshutdown broker
求关注,求打赏.png
网友评论