rocketmq的安装以及测试内置消息订阅脚本tools.sh


他是一款低延迟,高可用,0丢失 的消息中间件。因为kafka满足不了阿里的需求,尤其是对低延迟和高可用这一块,所以后来就有个这个中间件,在低延迟和高可用以及0丢失方面优于kafka 。

一、rocketmq简单了解 ~ 它诞生的背景

activemq的io达到瓶颈,尽管已经通过限流或者降低的方式,但还是不能够尽如人意,所以就关注到了当下比较流行的消息传递解决方案kafka,不幸的是,kafka也不能满足阿里的需求,尤其是在低延迟跟高可用上。

在这种情况下,决定开发一个新的消息传递引擎操作更广发的用例,从传统的发布订阅情景到 大批量 实时 零损失容忍 的交易系统。我们相信这个解决方案是有益的,所以面向社区 开源了它的源代码。

如今,有超过100多家企业在他们的业务中使用了rocketmq的开源版本(2016年12月16日之前官网统计的数据)
在这里插入图片描述
它的优点:
1 、低延迟: 高压下1ms响应超过99.6%
2、面向金融:具有追踪和审计的高可用性。
3、大数据友好,高吞吐
4、邮件堆积,0损失 .act

二、RocketMQ的安装

官网 : rocketMQ官网链接
GitHubrocketmq源码

rocketMQ安装+内置消息订阅脚本tools.sh的测试

一)、注意版本兼容问题

在这里插入图片描述
下载源码:
在这里插入图片描述
下载rocketMQ 的zip文件
rocketmq-externals
rocketmq

源码是java语言编写的,本文是直接下载源码,编译安装的,后期小伙伴们遇到别的java开源项目也可以按这个来编译哈:

1、rocketmq-master

上传到linux服务器后,将ro开头的文件挪到/root目录下 mv ro* /root/
解压缩后,放到 /usr/local/目录下,进入rocket-master文件夹,看到pom文件,在当前目录输入如下安装命令

unzip rocketmq-master.zip
cd rocketmq

 -- 看到有pom文件,对项目进行编译
mvn -Prelease-all -DskipTests clean install -U 

pwd
/root/rocketmq-master/distribution/target/rocketmq-4.7.1
[root@node02 rocketmq-4.7.1]# ls
rocketmq-4.7.1


-- 挪到/usr/local 下
[root@node02 rocketmq-4.7.1]# mv rocketmq-4.7.1/ /usr/local
cd /usr/local/

-- 改名
mv rocketmq-4.7.1  rocketmq

cd  rocketmq/bin/

[root@node02 bin]# ls
cachedog.sh       dledger      mqbroker            mqbroker.numanode1  mqnamesrv      mqshutdown.cmd  play.sh        runbroker.sh   setcache.sh   tools.sh
cleancache.sh     mqadmin      mqbroker.cmd        mqbroker.numanode2  mqnamesrv.cmd  os.sh           README.md      runserver.cmd  startfsrv.sh
cleancache.v1.sh  mqadmin.cmd  mqbroker.numanode0  mqbroker.numanode3  mqshutdown     play.cmd        runbroker.cmd  runserver.sh   tools.cmd

执行脚本如下,如果启动成功则会给出提示:
[root@node02 bin]# ./mqnamesrv   
新开窗口同上路径(cd /usr/local/rocketmq471/bin)执行:
./mqbroker -n localhost:9876

rocketMQ跟zk有点像,需要broker注册到mqnamesrv上,别人才能消费mqbroker提供的服务。

rocketmq的bin目录下有几个重要的脚本 需要关注:
mqbroker 是服务,启动的时候要加载runbroker.sh 脚本里的配置 ;mqnamesrv相当于注册中心,启动的时候要加载runserver.sh 脚本里的配置
言外之意如果注册中心或者服务 只要起不来,可以看看对应的两个配置里是否有需要调整的,比如你虚拟机的运存一共就1g,结果这俩配置文件里分配的都很大,就需要调整下。

重新开一个窗口,提供了一个脚本支持测试下消息订阅:
在cd /usr/local/rocketmq/bin 目录下,执行tools.sh脚本

./tools.sh org.apache.rocketmq.example.quickstart.Producer
执行之后,再执行
./tools.sh org.apache.rocketmq.example.quickstart.Consumer
输出完会等待下一次
2、rocketmq-externals 启动控制台程序,监控消息订阅等情况

解压缩rocketmq-externals-master.zip然后进行编译

unzip rocketmq-externals-master.zip
cd /root/rocketmq-externals-master/rocketmq-console
-- 看到有pom文件,进行编译:
mvn clean package -Dmaven.test.skip=true
cd target/
-- 将生成的jar文件放到指定目录下
mv  rocketmq-console-ng-1.0.1.jar /usr/local/
cd /usr/local/
-- 启动控制台
springboot的一个特点是可以动态修改文件属性,所以可以直接在启动的时候附加配置信息,启动方式1:
java -jar  rocketmq-console-ng-1.0.1.jar  --rocketmq.config.namesrvAddr=127.0.0.1:9876

启动方式2:
编辑  vi /root/rocketmq-externals-master/rocketmq-console/src/main/resources/application.properties
找到  rocketmq.config.namesrvAddr= ,然后编辑为
rocketmq.config.namesrvAddr=127.0.0.1:9876  保存后
进入到cd /usr/local/  ,直接启动java -jar  rocketmq-console-ng-1.0.1.jar 即可。

注册中心启动成功:
在这里插入图片描述
服务启动成功:

[root@node02 bin]# ./mqbroker
The broker[node02, 192.168.252.188:10911] boot success. serializeType=JSON

console.jar启动成功:

...
[2020-08-02 04:30:01.886]  INFO Initializing ProtocolHandler ["http-nio-8080"]
[2020-08-02 04:30:01.944]  INFO Starting ProtocolHandler [http-nio-8080]
[2020-08-02 04:30:01.991]  INFO Using a shared selector for servlet write/read
[2020-08-02 04:30:02.045]  INFO Tomcat started on port(s): 8080 (http)
[2020-08-02 04:30:02.073]  INFO Started App in 32.524 seconds (JVM running for 35.865)
...
图示日志告诉我,他给我提供了一个http服务,端口8080.那我们可以去访问下试试

在网页输入: http://你的rocketmq服务器ip:8080/
然后你就可以通过控制台后台界面查看消费信息了:
在这里插入图片描述

二)、安装过程遇到的问题

1 执行./mqnamesrv报错,错误信息如下:

[root@node02 bin]# ./mqnamesrv
Invalid initial heap size: -Xms4g
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

解决:
修改 /usr/local/rocketmq471/bin/ runserver.sh 里,我的虚拟机运存1g,如下可修改为配置值:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

重新执行 mqnamesrv 即可,不好用的话,source刷新一下该文件,再次执行mqnamesrv脚本即可。

2 执行 ./mqbroker 报错:

[root@node02 bin]# ./mqbroker
00:09:32.610 [main] ERROR RocketmqCommon - Failed to obtain the host name
java.net.UnknownHostException: node02: node02: Name or service not known
        at java.net.InetAddress.getLocalHost(InetAddress.java:1506) ~[na:1.8.0_261]
        at org.apache.rocketmq.common.BrokerConfig.localHostName(BrokerConfig.java:192) [rocketmq-common-4.7.1.jar:4.7.1]
        at org.apache.rocketmq.common.BrokerConfig.<init>(BrokerConfig.java:39) [rocketmq-common-4.7.1.jar:4.7.1]
        at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:110) [rocketmq-broker-4.7.1.jar:4.7.1]
        at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.7.1.jar:4.7.1]
Caused by: java.net.UnknownHostException: node02: Name or service not known
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_261]
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_261]
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_261]
        at java.net.InetAddress.getLocalHost(InetAddress.java:1501) ~[na:1.8.0_261]
        ... 4 common frames omitted

解决:编辑 /etc/hosts

vi /etc/hosts
追加如下内容,保存即可
服务器ip node02

3 执行tools.sh脚本报错connect to null failed**
解决:编译 vi tools.sh ,追加 export NAMESRV_ADDR=localhost:9876

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值