Apache RocketMQ是一个分布式、队列模型的消息中间件,具有低延迟、高性能和高可靠、万亿级容量和灵活的可扩展性。核心组件由四部分组成:Name Servers,Brokers,Producer 和 Consumer;它们中的每一个都可以水平扩展,而没有单一的故障节点。
直接找最新版下载后解压 http://rocketmq.apache.org/release_notes
修改 conf/broker.conf
添加以下配置
brokerIP1:配置broker所在服务器的ip地址,以便Name Server连接
修改 runserver.sh
和 runbroker.sh
(可不改)
因为rocketMQ默认的启动参数内存占用非常大,如果环境没有这么多内存就必需修改JAVA_OPT
参数
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
nohup sh bin/mqnamesrv &
查看运行日志:tail -f ~/logs/rocketmqlogs/namesrv.log
nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &
通过-c参数指定配置文件 查看运行日志:tail -f ~/logs/rocketmqlogs/broker.log
如果需要停止 RocketMQ
的服务,在生产环境不建议直接用kill,应该使用以下命令
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv
在客户端的Producer
运行起来准备发送消息时抛异常为 “ No route info of this topic ” 异常产生的原因可能是:
Broker
禁止自动创建 Topic
,且用户没有通过手工方式创建 TopicBroker
没有正确连接到 Name ServerBroker
禁止自动创建Topic
,且用户没有通过手工方式创建 Topic
rocketmq
所在目录下执行 " sh bin/mqbroker -m " 来查看 broker
的配置参数autoCreateTopicEnable=true
证明是没有问题的
Broker
没有正确连接到 Name Server
通过查看broker的日志 tail -f ~/logs/rocketmqlogs/broker.log
看看有没有错误信息Producer
没有正确连接到 Name Server
Name Server
的地址有没有错9876
端口有没有开发9876
端口
```bash
[root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --zone=public --list-ports
8090/tcp 80/tcp 8080/tcp
[root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --zone=public --add-port=9876/tcp --permanent
success
[root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --reload
success
[root@zlt rocketmq-all-4.5.0-bin-release]# firewall-cmd --zone=public --list-ports
9876/tcp 8090/tcp 80/tcp 8080/tcp
```
Name Server
连接不上Broker
检查 rocketmq-console
的集群页签,broker
的地址是否正确
broker
地址的配置方式请参考 安装部署
中提到的步骤:
broker.conf
的配置,添加 brokerIP1
参数broker
时加上 -c
参数指定配置文件死信队列默认的perm
值为2没有查看权限
在控制台把队列的perm
改为6就可以了
主题点击 TOPIC配置
修改perm