一、RocketMQ及虚拟机环境搭建

如题所述

第1个回答  2022-06-06
    想系统学习下RocketMQ,所谓万事开头难,环境跑起来再说。

    虚拟机:VirtualBox

        最好不要用 网络地址转换(NAT)端口转发 模式,RocketMQ在程序访问的时候只需要填写一个NameSrv地址,但是会从NameSrv拿Broker的地址(Broker端口10911,假如本机地址 10.10.1.22,虚拟机地址10.10.1.23,你的端口映射:10.10.1.22:10911 -> 10.10.1.23:10911,很不幸,RocketMQ会拿到10.10.1.23:10911去尝试连接Broker,这必然是连接不上的,而且MQ报错信息也很简单粗暴,后面也会经常遇到: No route info of this topic XXX )

    操作系统:Ubuntu 18.04

    JDK:1.8 

        之前采用的JDK12,坑比较多,JDK12对JVM部分做了调整,RocketMQ提供的配置是基于JDK1.8的,改了半天也没有弄好    

    RocketMQ:4.4.0

    搭建很简单,装好JDK,配置好环境变量,然后启动NameSrv及Broker

    Rocket目录: ~/soft/rocketmq-all-4.4.0-bin-release ,之后的命令都是在这个目录下执行的

    虚拟机IP:10.1.11.115

            nohup sh bin/mqnamesrv -n 10.1.11.155:9876 &

            启动成功后日志显示:The Name Server boot success. serializeType=JSON

            nohup  sh bin/mqbroker -n 10.1.11.155:9876 -c conf/broker.conf autoCreateTopicEnable=true &

            启动成功后日志显示:

            The broker[broker-a, 10.1.11.155:10911] boot success. serializeType=JSON and name server is 10.1.11.155:9876

            注意斜体部分的配置文件: broker.conf   需要新增三行配置:

                

            第一行指定Name Server地址,第二行及第三行执行Broker的地址,为啥有俩,据说有一个是给VIP通道用的,注意这里用的IP都是具体的IP,建议不要使用 localhost 或者 127.0.0.1,不然有可能出现  No route info of this topic XXX

             autoCreateTopicEnable 这个属性,允许自动创建topic,我配置了这个,没有毛线用处,没有深究,都是手工创建的Topic,创建及查看Topic的cmd命令如下:

            创建:sh bin/mqadmin updateTopic -n namesrv地址 -b broker地址 -t topic名称

            示例:sh bin/mqadmin updateTopic -n 10.1.11.115:9876 -b 10.1.11.115:10911 -t asdTopic

            查看所有信息,含Topic :sh mqadmin topicList -n

            NameServer 及 Broker启动完毕后,可以用自带的Tools模拟Producer及Consumer,命令如下:

            首先要执行 export NAMESRV_ADDR=10.1.11.155:9876, 告诉 Producer 和 Consumer Name Server 的地址

            启动Producer,该Producer会产生一批数据推送到MQ

            命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

            最后启动Consumer接收Producer发送的消息

            命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

        关闭 broker :sh bin/mqshutdown broker

        关闭 name server:sh bin/mqshutdown namesrv

        这一篇主要是MQ的搭建及基础验证,参考  http://rocketmq.apache.org/docs/quick-start/ ,下一篇主要是通过JAVA模拟Producer及Consumer。

            

    
相似回答
大家正在搜