Java游戏服务器开发

RocketMQ使用(1) -- 安装与部署

2020-01-13  本文已影响0人  王广帅

安装包下载,版本: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,注意,操作成功的提示在右上角,这总让人感觉消息没有发出去。

设置自动创建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
上一篇 下一篇

猜你喜欢

热点阅读