rocketmq消息中间件的概念、下载和简单使用

rocketmq消息中间件

  • rocketmq是高性能、高并发、分布式消息中间件
  • rocketmq典型应用场景: 分布式事务、异步解耦
  • rocketmq概念模型
    在这里插入图片描述
    • 注1: 对于非广播类的消息,同一条消息只能被consumerGroup中的一个conusmer消费;如果有多个consumerGroup,可以被多个consumerGroup中的任意一台机器消费.
    • 注2: broker由topic和messageQueue组成,一个topic可以被一个broker管理,也可以被多个broker管理.
      在这里插入图片描述
      为了保证高可用性,broker会使用一个slave同步master broker,当master broker挂掉了替换上.
  • 分布式事务
    在这里插入图片描述
  • rocketmq下载安装使用
    • rocketmq下载官网

      wget https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip
      unzip rocketmq-all-4.8.0-bin-release.zip
      
    • 修改mqbroker.xml中新生代和持久代占用内存大小(默认配置比较高)

      # 修改新生代内存
      <-XX:NewSize>128M</-XX:NewSize>
      <-XX:MaxNewSize>128M</-XX:MaxNewSize>
      # 修改持久代内存
      <-XX:PermSize>64M</-XX:PermSize>
      <-XX:MaxPermSize>64M</-XX:MaxPermSize>
      
    • 修改runbroker.sh文件中java运行内存大小

      # 调整java运行内存大小
      JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn512m"
      
    • 启动nameserver

      nohup sh bin/mqnamesrv &
      
    • 验证nameserver是否启动成功

      ps -ef|grep namesrv
      # nameserver默认启动在9876端口,所以也可以通过这种方式验证
      netstat -anp|grep 9876
      # 可以通过查看日志方式验证(rocketmq的日志放在根目录的logs目录下)
      tail -f ~/logs/rocketmqlogs/namesrv.log 
      
    • 启动mqbroker

      # -n表示指定nameserver地址
      nohup sh bin/mqbroker -n localhost:9876 &
      
    • 关闭broker和nameserver

      # 关闭namesrv服务
      sh bin/mqshutdown namesrv
      # 关闭broker服务
      sh bin/mqshutdown broker
      
    • 指定NAMESRV_ADDR的环境变量

      export NAMESRV_ADDR=localhost:9876
      
    • 测试搭建环境是否可用

      # producer生产消息到message broker内, 运行之后会自动发送大量的消息,之后就会退出,如下图,result:true表示成功
      sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
      

      在这里插入图片描述

      # 消费者消费消息(从下图可以看出是多线程的)
      sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
      

      在这里插入图片描述

    • 创建topic

      # bin目录下
      # update: 更新和创建topic, -n: nameserver地址, -t: 指定topic名称为stock, -c: 指定集群名称
      ./mqadmin updateTopic -n localhost:9876 -t stock -c DefaultCluster
      

      在这里插入图片描述

    • rocketmq使用mqadmin命令报Algorithm HmacSHA1 not available错误的解决办法
      通过java-version可以看到jdk安装的是open-jdk(可以理解为是精简版的jdk).所以要在bin/tools.sh中添加:${JAVA_HOME}/lib/ext:/usr/lib/jvm/jre-1.8.0-openjdk/lib/ext

      JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/usr/lib/jvm/jre-1.8.0-openjdk/lib/ext"
      

猜你喜欢

转载自blog.csdn.net/qq_26496077/article/details/113526464
今日推荐