• RocketMQ 4.x 介绍以及安装


    Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件.

    官网:http://rocketmq.apache.org/

    特点

    • 支持 Broker 和 Consumer 端消息过滤
    • 支持发布订阅模型,和点对点,
    • 支持拉 pull 和推 push 两种消息模式
    • 单一队列百万消息、亿级消息堆积
    • 支持单 master 节点,多 master 节点,多 master 多 slave 节点
    • 任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
    • 消息失败重试机制、支持特定 level 的定时消息
    • 新版本底层采用 Netty
    • 4.3.x 支持分布式事务
    • 适合金融类业务,高可用性跟踪和审计功能。

    概念

    • Producer:消息生产者
    • Producer Group:消息生产者组,发送同类消息的一个消息生产组
    • Consumer:消费者
    • Consumer Group:消费同类消息的多个实例
    • Tag:标签,子主题(二级分类)对 topic 的进一步细化,用于区分同一个主题下的不同业务的消息
    • Topic:主题, 如订单类消息,queue 是消息的物理管理单位,而 topic 是逻辑管理单位。一个 topic 下可以有多个 queue,默认自动创建是4个,手动创建是8个
    • Message:消息,每个 message 必须指定一个 topic
    • Broker:MQ 程序,接收生产的消息,提供给消费者消费的程序
    • Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比 zookeeper 更轻量)
    • Offset: 偏移量,可以理解为消息进度
    • commit log: 消息存储会写在 Commit log 文件里面

    学习资源:http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/

     

    安装前提条件(推荐) 64bit OS,Linux/Unix/Mac  64bit(Windows 不兼容),JDK 1.8+;

    快速开始 http://rocketmq.apache.org/docs/quick-start/

    这里以 Centos 7.2 虚拟机为例

    安装 JDK1.8

    第一步:获取 JDK1.8 安装包

    地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    第二步:解压安装包

    新建一个文件夹,用来放置安装包(当然可以使用任意文件夹)进到目录 /usr/local/software 

    解压:tar -zxvf jdk-8u201-linux-x64.tar.gz
    重命名:mv jdk1.8.0_201 jdk8

    注意:解压后生成的文件夹是: jdk1.8.0_201,我这里重命名的目的是为了方便自己看,其实不重命名也无所谓

    第三步:配置环境变量

    vim /etc/profile

    加入以下配置

    export JAVA_HOME=/usr/local/software/jdk8
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME PATH CLASSPATH

    使用 source /etc/profile 让配置立刻生效

    注意:JAVA_HOME 以自己实际情况为准。我这里的是:/usr/local/software/jdk8

    安装 Maven

    第一步:获取安装包

    地址:http://maven.apache.org/download.cgi

    第二步:解压安装包

    解压:tar -zxvf apache-maven-3.6.0-bin.tar.gz
    重命名: mv apache-maven-3.6.0 maven

    第三步:配置环境变量

    vim /etc/profile

    加入以下配置

    export PATH=/usr/local/software/maven/bin:$PATH

    使用 source /etc/profile 让配置立刻生效

    安装 RocketMQ4.X

    第一步:获取安装包

    地址:https://mvnrepository.com/search?q=mybatis

    第二步:解压编译安装包

    unzip rocketmq-all-4.4.0-source-release.zip
    cd rocketmq-all-4.4.0/
    mvn -Prelease-all -DskipTests clean install -U

    注意:我这里是重命名过的文件夹,原本的文件夹名称是:rocketmq-all-4.4.0

    第三步:启动

    启动 nameServer

    cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
    nohup sh bin/mqnamesrv &

    查看日志 tail -f nohup.out (结尾:The Name Server boot success. serializeType=JSON 表示启动成功)

    启动 broker (-n指定nameserver地址,nameserver服务端口为9876,broker默认端口10911)

    cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
    nohup sh bin/mqbroker -n localhost:9876 &

    关闭 nameserver broker 执行的命令

    cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
    sh bin/mqshutdown broker
    sh bin/mqshutdown namesrv

    使用 jps 查看进程

    第四步:测试

    cd /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq
    #设置名称服务地址
    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...

    安装 RocketMQ 控制台

    第一步:获取源码包

    第二步:解压源码包

    第三步:修改配置文件和 pom 文件

     

    原本这里的版本是快照版本,这里修改为正式版本(也就是把快照后缀删除即可)

     

    这里修改为实际内网地址,集群部署的话,多个地址用英文分号分隔

    第四步:进入pom文件所在目录,使用 mvn clean package -Dmaven.test.skip=true 命令打包

    第五步:进入 target 目录 ,使用命令启动: java -jar rocketmq-console-ng-1.0.0.jar

    守护进程方式启动命令: nohup java -jar rocketmq-console-ng-1.0.0.jar &

    常见问题

    • NameServer内存不够怎么处理

      • 找到 runserver.sh 修改 JAVA_OPT

        报错问题如下
        [root@iZwz94sw188z3yfl7lpmmsZ apache-rocketmq]# sh bin/mqnamesrv
        Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
        Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
        Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 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 2147483648 bytes for committing reserved memory.
        # An error report file with more information is saved as:
        # /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/hs_err_pid8993.log
        
        解决如下 编辑 bin/runserver.sh:
        JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    • Broker内存不足

      • 找到 runbroker.sh 修改 JAVA_OPT

      • JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"

    注意:runserver.sh 和 runbroker.sh 这两个文件在目录 /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/bin 里

  • 相关阅读:
    想写点啥?
    网站优化记录
    freemarker了解
    spring理解
    mybatis了解
    struts机制
    SSM整合时初始化出现异常
    常用的正则表达式
    MySQL数据库安装配置步骤详解
    完全卸载MySQL数据库,实现重装
  • 原文地址:https://www.cnblogs.com/jwen1994/p/12318575.html
Copyright © 2020-2023  润新知