zoukankan      html  css  js  c++  java
  • RocketMq 实战与原理解析 学习笔记

    RocketMq 实战与原理解析 杨开元
     
    1.3.1 下载 安装 配置
    wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
    unzip rocketmq-all-4.5.1-bin-release.zip -d . #这里有个点 表示在当前目录解压
     
    1.3.2 启动消息队列
    启动 nameserver
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup sh /bin/mqnamesrv &
    [1] 2463
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup: 忽略输入并把输出追加到"nohup.out"
    # 上述显示问题 如下方式解决,但服务是起来了的
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup sh bin/mqnamesrv > /home/rocky/dev/rocketmq/namesrv_1.log 2>&1 & #这里也可以导入/dev/null
    [2] 2492
    启动 broker
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup sh bin/mqbroker -n localhost:9876 > /dev/null 2>&1 &
    [2] 2654
    查看 rocketmq 服务
    ps -ef|grep rocketmq
     
    1.3.3 示例程序
    [root@dev_pc1 bin]# export NAMESRV_ADDR=localhost:9876
    生产者 发送消息
    [root@dev_pc1 bin]# sh ./tools.sh org.apache.rocketmq.example.quickstart.Producer #当前位于bin目录
    显示如下
    SendResult [sendStatus=SEND_OK, msgId=C0A801080AB80D71636133F9EE3803E7, offsetMsgId=C0A8010800002A9F000000000002BDFE, messageQueue=MessageQueue [topic=TopicTest, brokerName=dev_pc1.rocky.com, queueId=2], queueOffset=249]
    03:13:37.490 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:9876] result: true
    03:13:37.492 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[192.168.1.8:10911] result: true
    消费者 处理消息
    [root@dev_pc1 bin]# sh ./tools.sh org.apache.rocketmq.example.quickstart.Consumer
    显示如下
    ConsumeMessageThread_9 Receive New Messages: [MessageExt [queueId=2, storeSize=180, queueOffset=246, sysFlag=0, bornTimestamp=1583910817442, bornHost=/192.168.1.8:36446, storeTimestamp=1583910817442, storeHost=/192.168.1.8:10911, msgId=C0A8010800002A9F000000000002B58E, commitLogOffset=177550, bodyCRC=1487577949, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1583911325039, UNIQ_KEY=C0A801080AB80D71636133F9EE2203DB, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 57, 56, 55], transactionId='null'}]]
     
    1.3.4 关闭消息队列
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# sh bin/mqshutdown broker
    The mqbroker(2661) is running...
    Send shutdown request to mqbroker(2661) OK
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# sh bin/mqshutdown namesrv
    The mqnamesrv(2629) is running...
    Send shutdown request to mqnamesrv(2629) OK
    [2]+ 退出 143 nohup sh bin/mqbroker -n localhost:9876 > /dev/null 2>&1
     
    ###
    other-1
    想在另一台物理机也安装一遍. wget 太慢,局域网内想scp一下。
    遇到问题:
    [root@dev_pc3 Downloads]# scp root@dev_pc1.rocky.com:/home/rocky/Download/rocketmq-all-4.5.1-bin-release.zip .
    The authenticity of host 'dev_pc1.rocky.com (192.168.1.8)' can't be established.
    ECDSA key fingerprint is 8f:64:55:5e:2f:73:2d:ab:a6:04:c1:db:83:11:6e:b2.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'dev_pc1.rocky.com' (ECDSA) to the list of known hosts.
    Connection closed by 192.168.1.8
    解决方式
    [root@dev_pc3 Downloads]# ssh -o StrictHostKeyChecking=no dev_pc1.rocky.com
    root@dev_pc1.rocky.com's password:
    Last login: Wed Mar 11 01:45:32 2020
    [root@dev_pc1 ~]# 这样子直接远程连上了pc1机器了
    [root@dev_pc1 ~]# exit
    logout
    Connection to dev_pc1.rocky.com closed.
    [root@dev_pc3 Downloads]
    再次下载 好了,很快!
    [root@dev_pc3 Downloads]# scp root@dev_pc1.rocky.com:/home/rocky/dev_share/rocketmq-all-4.5.1-bin-release.zip .
    root@dev_pc1.rocky.com's password:
    rocketmq-all-4.5.1-bin-release.zip 100% 12MB 12.0MB/s 00:01 看速度 amazing!!
    [root@dev_pc3 Downloads]#
     
    other-2
    当前就在另一台机器上
    [root@dev_pc3 Downloads]# unzip rocketmq-all-4.5.1-bin-release.zip -d .
    -bash: unzip: command not found
    [root@dev_pc3 Downloads]# yum install unzip
    Loaded plugins: fastestmirror
     
    ####
     
    2.2.1 启动多个 NameServer 和 Broker
    步驟一 机器一:
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup bin/mqnamesrv > /home/rocky/dev/rocketmq/namesrv_1.log 2>&1 &
    [1] 3383
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-a.properties > /home/rocky/dev/rocketmq/broke-a.log 2>&1 & 主a
    [2] 3428
    步驟二 機器二
    [root@dev_pc3 rocketmq-all-4.5.1-bin-release]# nohup bin/mqnamesrv > /home/rocky/dev/rocketmq/namesrv_2.log 2>&1 &
    [root@dev_pc3 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties >/home/rocky/dev/rocketmq/broker-a-s.log 2>&1 & 从a
    [2] 7451
    此时 broker-a 主从 都起来了
    步骤三 机器二
    [root@dev_pc3 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-b.properties >/home/rocky/dev/rocketmq/broker-b.log 2>&1 & 主b
    [3] 7757
    步骤四 机器一
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# nohup bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties >/home/rocky/dev/rocketmq/broker-b-s.log 2>&1 & 从b
    [3] 3678
    这时候才算起来了
     
    ###
    other-3
    同时创建多级目录
    mkdir -p /home/rocky/dev/rocketmq/store-a
    //TODO 创建一个文件 同时创建不存在的目录
     
    other-4
    內存不夠 报错了
    [root@dev_pc3 rocketmq-all-4.5.1-bin-release]# cat /home/rocky/dev/rocketmq/broker-a-s.log
    nohup: ignoring input
    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:
    # /home/rocky/Downloads/rocketmq-all-4.5.1-bin-release/hs_err_pid7458.log
    这个是启动 机器二 broker-a-s 时才发现,正常自己试验,broker-a也要配置修改内存!!
     
    修改
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# vi bin/runbroker.sh 改成512m先
    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn512m"
     
    other-5
    broker-b-s启动后又自动退出了
    [3]+ 退出 255 nohup bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties > /home/rocky/dev/rocketmq/broker-b-s.log 2>&1
    查看日志
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]# cat /home/rocky/dev/rocketmq/broker-b-s.log
    nohup: 忽略输入
    java.lang.RuntimeException: Lock failed,MQ already started
    at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:220)
    at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:824)
    at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:64)
    at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58)
    [root@dev_pc1 rocketmq-all-4.5.1-bin-release]
    原因 storePath 2个broker重复
    解决方案
    改成不同目录 重启ok
    ###
     
    搭建 Rocketmq-Console
    ~1 克隆项目到本地
    [root@dev_pc1 dev_share]# git clone https://github.com/apache/rocketmq-externals
    正克隆到 'rocketmq-externals'...
    ~2 进入目录 修改配置文件
    [root@dev_pc1 rocketmq-console]# pwd
    /home/rocky/dev_share/rocketmq-externals/rocketmq-console
    [root@dev_pc1 rocketmq-console]# vi src/main/resources/application.properties
    主要修改2处 其他先默认
    server.contextPath=/rocketmq
    rocketmq.config.namesrvAddr=dev_pc1.rocky.com:9876;dev_pc3.rocky.com:9876
    ~3 编译打包源文件 有点慢这个
    [root@dev_pc1 rocketmq-console]# mvn clean package -Dmaven.test.skip=true
    [INFO] Scanning for projects...
     
    又报错
    [root@dev_pc1 rocketmq-console]# mvn clean package -Dmaven.test.skip=true
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building rocketmq-console-ng 1.0.1
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ rocketmq-console-ng ---
    [INFO] Deleting /home/rocky/dev_share/rocketmq-externals/rocketmq-console/target
    [INFO]
    [INFO] --- maven-checkstyle-plugin:2.17:check (validate) @ rocketmq-console-ng ---
    [INFO] Starting audit...
    /home/rocky/dev_share/rocketmq-externals/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java:20:8: error: Unused import - org.springframework.boot.autoconfigure.EnableAutoConfiguration.
    Audit done.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.656 s
    [INFO] Finished at: 2020-03-12T06:42:14-04:00
    [INFO] Final Memory: 22M/258M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (validate) on project rocketmq-console-ng: Failed during checkstyle execution: There is 1 error reported by Checkstyle 6.11.2 with style/rmq_checkstyle.xml ruleset. -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
     
     
    网上转了一圈,博客看了一打,没用上。就这句
    /home/rocky/dev_share/rocketmq-externals/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java:20
    方案
    vi /home/rocky/dev_share/rocketmq-externals/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java
    //import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    上面这个注解,确实引用了,没使用,就因为这个报错...注释掉,再编译好了...
    # 要相信提示!!!!
     
    ~4 [root@dev_pc1 rocketmq-console]# java -jar target/rocketmq-console-ng-1.0.1.jar
    # 如果配置文件没有填写Name Server的话,可以在启动项目时指定namesrvAddr
    # $ java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr='localhost:9876'
     
     
     
  • 相关阅读:
    启动 YARN 并运行 MapReduce 程序(伪分布式模式)
    启动 HDFS 并运行 MapReduce 程序(伪分布式模式)
    简单计算器(stack)
    Linux定时发邮件脚本
    HttpClient接口调用-客户端
    获取时间字符串
    Visual Assist代码高亮突然失效
    批量快速生成员工文件夹工具
    日语学习笔记整理(汉译日)
    有关使用PLSQL Developer时出现报错ora-12514解决的方法
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/12501745.html
Copyright © 2011-2022 走看看