美文网首页
RocketMQ-本地搭建

RocketMQ-本地搭建

作者: Robin92 | 来源:发表于2020-04-25 23:43 被阅读0次

    中间件概念

    即中间角色,不独立工作。

    • 文件中间件,如 FastHDFS
    • 消息中间件,如各种 MQ、Kafka
    • 搜索中间件,如 ElasticSearch
    • 缓存中间件,如 Redis、Memcache

    安装

    1. 下载 jdk sudo apt-get install openjdk-8-jdk,安装后配置 $JAVA_HOME,将 $JAVA_HOME/bin 加入 PATH
    2. 安装 mvn(官网菜鸟教程
    3. 下载 RocketMQ 并安装(官网

    注意不是 jre,而是 jdk。
    注意版本,可能会有问题。
    如果在执行编译 MQ(mvn 命令)时出现 Compilation failure: [ERROR] Source option 5 is no longer supported. Use 6 or later 的错误,需要将 pom.xml 中的 maven-compiler-plugin 配置 sourcetargeet 改为 1.7 及以上重试。(也可能是版本问题造成的)

    启动

    当编译完了后(mvn 命令),会有一个 ./distribution/target 目录,此目录是编译后的文件,我当前的可执行文件是在 ./distribution/target/rocketmq-4.7.0/rocketmq-4.7.0/bin 中。

    image.png

    可以将生成的 rocketmq-4.7.0 目录移动到系统目录中,如 /usr/local/ 下。

    启动 nameserver

    nameserver 相当于一个注册中心,需要先启动它。

    进入到 bin 目录中

    ./mqnamesrv
    

    启动 broker

    启动前,要先设置一下。更改 runbroker.sh 中的配置

    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m"
    

    启动 broker,需要指定 -n 参数来指定 nameserver 地址和端口

    $./mqbroker -n localhost:9876 
    The broker[robincai-master, 10.9.0.18:10911] boot success. serializeType=JSON
    

    mqnamesrv 实际是调用了 ./runserver.shmqbroker 实际是调用了 runbroker.sh
    runserver.sh 执行了许多配置,比如配置 JVM 的 GC,它启动时上来就给 nameserver 4G 的内存。
    runbroker.sh 上来就给 8G 的内存,所以需要上面的配置改动,不然启动时就挂了。
    错误信息如下:

    ./mqbroker
    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /usr/local/rocketmq-4.7.0/bin/hs_err_pid31891.log
    

    测试消息发送和接收

    在 bin 目录下有一个 tools.sh,可用来测试,但需要首先修改其配置:

    export NAMESRV_ADDR=localhost:9876
    

    然后分别测试发送和接收消息:

    ./tools.sh org.apache.rocketmq.exampl先改一下 broker 的内存e.quickstart.Producer
    ./tools.sh org.apache.rocketmq.example.quickstart.Consumer
    

    若无报错,即为成功

    控制台

    RocketMQ 没有自带的控制台,而可以下载源码安装一个。目录为 rocketmq-externals 中的 rocketmq-console 扩展。

    克隆项目。进入到 rocketmq-console 中,执行编译

    mvn clean package -Dmaven.test.skip=true
    

    同样会生成一个 target 目录,其中有两个 jar 包,一个是源码包,一个是可用 java 运行的包(rocketmq-console-ng-1.0.1.jar)。

    运行控制台服务

    java -jar rocketmq-console-ng-1.0.1.jar
    

    其默认运行在 8080 端口,打开 localhost:8080 可查看界面。
    在 OPS 页面输入 nameserver 地址(按回后点击更新)即可查看。

    启动时加配置 --rocketmq.config.namesrvAddr=127.0.0.1:9876 参数可默认连到一个 nameserver。
    也可以写在配置文件中,见源码包中的 application.properties 文件。


    相关文章

      网友评论

          本文标题:RocketMQ-本地搭建

          本文链接:https://www.haomeiwen.com/subject/ouyhwhtx.html