关于RocketMQ的单节点部署官方文档已经描述得非常清楚了,这里只是做一个简单的备忘。 如下安装步骤均基于最新的Apache RocketMQ 5.3.0实现。
下载安装RocketMQ
直接下载官方编译后的二进制包到本地并解压。
代码语言:javascript复制$ unzip rocketmq-all-5.3.0-bin-release.zip
默认情况下,启动RocketMQ至少需要4G内存(当Java版本小于9时默认的新生代大小为2G),如果安装RocketMQ的环境没有这么大的内存空间时需要修改对应的JVM参数。
如下在Java 8环境中修改RocketMQ的初始内存参数(ROCKETMQ_HOME
为RocketMQ的安装目录)。
修改ROCKETMQ_HOME/bin/runserver.sh
:
修改ROCKETMQ_HOME/bin/runbroker.sh
启动NameServer
代码语言:javascript复制# 启动namesrv
$ nohup sh bin/mqnamesrv &
# 验证namesrv是否启动成功
# 如果在namesrv.log中看到'The Name Server boot success..', 表示NameServer已成功启动
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
启动Broker Proxy
NameServer成功启动后,需要启动Broker和Proxy。 在这里使用Local模式部署,即Broker和Proxy同进程部署。 5.x版本也支持Broker和Proxy分离部署以实现更灵活的集群能力,详见部署教程。
代码语言:javascript复制# 启动broker和proxy
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
# 验证broker是否启动成功, 比如broker的ip是192.168.3.156,然后名字是broker-a
# 在proxy.log中看到“The broker[brokerName,ip:port] boot success..”,这表明broker已成功启动
$ tail -f ~/logs/rocketmqlogs/proxy.log
The broker[broker-a,192.168.3.156:10911] boot success...
关闭服务
可以通过以下方式关闭服务。
代码语言:javascript复制# 关闭Broker和Proxy
$ sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker with proxy enable OK(36695)
# 关闭NameServer
$ sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
安装图形化界面
RocketMQ Dashboard是RocketMQ的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替Topic配置、Broker管理等命令行操作。
下载rocketmq-dashboard
源码后,根据情况修改application.yml
中的参数值,如:server.port
,rocketmq.config.namesrvAddrs
,rocketmq.config.proxyAddr
,rocketmq.config.proxyAddrs
等。
编译rocketmq-dashboard
:
$ mvn clean package -Dmaven.test.skip=true
运行rocketmq-dashboard
:
$ java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
提示:Started App in x.xxx seconds (JVM running for x.xxx)
表示启动成功。
浏览器页面访问:rocketmq-dashboard.addr
:server.port
即可看到控制台界面。
测试消息收发
工具测试消息收发
代码语言:javascript复制# 通过环境变量设置NameServer地址
$ 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...
SDK测试消息收发
第一步:在Maven项目的pom.xml文件中引入SDK依赖。
代码语言:javascript复制<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>${rocketmq-client-java-version}</version>
</dependency>
第二步:通过mqadmin创建Topic。
代码语言:javascript复制$ sh bin/mqadmin updatetopic -n localhost:9876 -t TestTopic -c DefaultCluster
第三步:编写消息生产者和消费者,具体示例详见java example。
值得注意的是:RocketMQ支持SimpleConsumer和PushConsumer两种消费者类型,可以选择其中任意一种方式订阅消息。
【参考】 RocketMQ5.x单机部署 Rocketmq 5.x 开启proxy导致8080/8081端口冲突 Rocketmq 5.x Java 客户端 rocketmq5.x创建topic RocketMQ5.0以上版本定时/延时消息的topic,除了手动用mqadmin创建,别的方式吗? RocketMQ Dashboard