一、环境准备:奠定部署基础
RocketMQ单机部署前,需明确环境要求与依赖项。推荐使用Linux系统(如CentOS 7+),因其稳定性与兼容性更佳。硬件配置方面,建议至少4核CPU、8GB内存及50GB磁盘空间,以应对消息堆积与高并发场景。软件依赖包括JDK 1.8+、Maven 3.5+及Git,需通过java -version、mvn -v和git --version验证安装。
网络配置是关键环节。需确保服务器防火墙开放9876(Broker端口)、10911(NameServer端口)及自定义端口(如管理控制台)。例如,在CentOS中执行firewall-cmd --add-port=9876/tcp --permanent并重启防火墙。此外,建议配置主机名解析,在/etc/hosts中添加<IP> <hostname>,避免通信问题。
二、安装与配置:分步实现
1. 下载与解压
从Apache RocketMQ官网下载最新稳定版(如5.1.0),使用wget或curl下载后解压至指定目录,如/opt/rocketmq。解压后检查目录结构,确认bin、conf等核心文件夹存在。
2. 配置NameServer
NameServer是RocketMQ的路由中心,需修改conf/namesrv.properties。关键参数包括:
listenPort=9876:监听端口。rocketmqHome=/opt/rocketmq:安装路径。server.netty.nThreadWorkerThreads=4:Netty工作线程数,根据CPU核心数调整。
3. 配置Broker
Broker是消息存储与处理的核心,需修改conf/broker.conf。重点参数如下:
brokerClusterName=DefaultCluster:集群名称(单机部署可保留默认)。brokerName=broker-a:Broker名称,需唯一。brokerId=0:0表示Master,非0为Slave(单机部署设为0)。deleteWhen=04:每天4点删除过期消息。fileReservedTime=48:消息保留48小时。storePathRootDir=/data/rocketmq/store:消息存储路径,需确保目录存在且权限正确。
内存优化:单机部署时,建议调整JVM参数。编辑runbroker.sh和runserver.sh,修改JAVA_OPT:
# runbroker.sh示例JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g"# runserver.sh示例JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m"
根据实际内存调整,避免OOM。
三、启动与验证:确保服务可用
1. 启动NameServer
执行nohup sh bin/mqnamesrv &,通过jps查看进程是否存在NamesrvStartup。日志输出至logs/namesrv.log,检查是否有The Name Server boot success字样。
2. 启动Broker
执行nohup sh bin/mqbroker -n localhost:9876 &,参数-n指定NameServer地址。验证日志logs/broker.log中是否有The broker[broker-a] boot success。
3. 客户端测试
使用RocketMQ提供的tools.sh发送与接收消息:
# 发送消息sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer# 接收消息sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
观察控制台输出,确认消息收发成功。
四、生产环境优化建议
1. 性能调优
- 消息存储:使用SSD硬盘提升I/O性能,调整
mapedFileSizeCommitLog=1073741824(1GB)和mapedFileSizeConsumeQueue=300000(300KB)以适应业务量。 - 并发控制:根据QPS调整
sendMessageThreadPoolNums=16(发送线程数)和pullMessageThreadPoolNums=16(拉取线程数)。
2. 监控与告警
集成Prometheus+Grafana监控关键指标,如TPS、堆积量、磁盘使用率。配置告警规则,如堆积量超过10万条时触发邮件通知。
3. 备份与恢复
定期备份store目录,使用bin/mqadmin updateBrokerConfig动态调整配置。灾难恢复时,停止Broker后替换store目录并重启。
五、常见问题与解决
- 端口冲突:检查
netstat -tulnp | grep 9876,终止占用进程或修改端口。 - 权限不足:确保
store目录权限为chown -R rocketmq:rocketmq /data/rocketmq。 - 内存不足:调整JVM参数或升级服务器配置。
六、总结与展望
RocketMQ单机部署适合开发测试与轻量级生产环境。通过合理配置与优化,可实现高吞吐、低延迟的消息服务。未来可扩展至集群部署,结合消息分片、事务消息等高级特性,满足更复杂的业务需求。建议开发者持续关注RocketMQ社区,及时应用新版本特性与安全补丁。