• 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'
     
     
     
  • 相关阅读:
    mysql命令集锦
    linux 删除文件名带括号的文件
    linux下的cron定时任务
    struts2文件下载的实现
    贴一贴自己写的文件监控代码python
    Service Unavailable on IIS6 Win2003 x64
    'style.cssText' is null or not an object
    "the current fsmo could not be contacted" when change rid role
    远程激活程序
    新浪图片病毒
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/12501745.html
Copyright © 2020-2023  润新知