动机背景
早起使用ACTIVEMQ做社交,大数据管道,交易及其他后面量大了。根据我们的预演,随着队列和虚拟主题的使用,ActiveMQ IO模块达到了瓶颈。我们尽力通过节流、断路器等来解决这个问题,但效果不佳。因此,我们开始关注当时流行的通讯解决方案Kafka。Kafka不能满足我们的要求,特别是在低延迟和高可靠性方面。
我们决定发明一个新的消息传递引擎来处理更广泛的用例集,从传统的发布/子场景到高容量的实时零损失容忍事务系统RocketMQ,目前有100多家公司在他们的业务中使用开源版本的RocketMQ。
The following table demonstrates the comparison between RocketMQ, ActiveMQ and Kafka (Apache’s most popular messaging solutions according to awesome-java):
主流MQ的对比
ActiveMQJava,.NET,C++等。推送模型,支持OpenWire,STOMP,AMQP,MQTT,JMS独占消费者或排他队列可以确保订购支撑不支持支撑支撑不支持支持使用jdbc和高性能日志(如Level DB、kahadb)进行非常快速的持久化。支撑支撑支持,取决于存储,如果使用kahadb,则需要一个动物园管理员服务器。不支持默认配置是低级别的,用户需要优化配置参数。支撑
卡夫卡Java,Scala等支持TCP确保分区内消息的顺序不支持支持,使用异步生成器不支持支持下,可以使用Kafka流过滤消息。不支持高性能文件存储支持偏移量不支持支持,需要一个动物园管理员服务器。不支持Kafka使用键值对格式进行配置。这些值可以从文件中提供,也可以以编程方式提供。支持,使用终端命令公开核心指标。
RocketMQJava,C++,Go拉模型,支持TCP,JMS,OpenMessage确保严格的消息排序,并能优雅地扩展。支撑支持同步模式,以避免消息丢失。支撑支持基于SQL 92的属性筛选表达式支撑高性能低延迟文件存储支持时间戳和偏移量2表示不支持支持,主从模型,没有其他工具包支撑开箱即用,用户只需注意几个配置即可。支持丰富的web和终端命令来公开核心指标
安装
1.1安装jdk8
快速版:yum install -y jdk
https://blog.csdn.net/pang_ping/article/details/80570011
1.2安装maven
快速版:yum install -y maven
https://www.cnblogs.com/116970u/p/11211963.html
1.3安装git
快速版:yum install -y git
https://blog.csdn.net/xwj1992930/article/details/96428998
安装rocketmq 4.7
mkdir /opt/software/
cd /opt/software/
wget https://archive.apache.org/dist/rocketmq/4.7.0/rocketmq-all-4.7.0-source-release.zip
unzip rocketmq-all-4.7.0-source-release.zip
cd rocketmq-all-4.7.0-source-release/
mvn -Prelease-all -DskipTests clean install -U
修改配置文件(根据你的内存资源丰俭由人)
将三个文件中的Xms,Xmx,Xmn三个参数修改为合适的数值
cd /opt/software/rocketmq-all-4.7.0-source-release/distribution/target/rocketmq-4.7.0/rocketmq-4.7.0
vim bin/runserver.sh
vim bin/runbroker.sh
vim bin/tools.sh
启动服务
1,启动rocketmq nameserver
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...为成功
2,启动broker
ohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...为成功
3,跑脚本演示是否部署成功
> 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...为消费成功
安装可视化控制台Rocket-NG
cd /opt/software
gitclonehttps://github.com/apache/rocketmq-externals.git
cd/opt/software/rocketmq-externals/rocketmq-console/src/main/resources
vim application.properties
1,修改配置文件
将rocketmq.config.isVIPChannel设置为false,配置rocketmq.config.namesrvAddr为 本机地址:9876,可以选择性修改port或者下一步再命令中指定
2,MVN PACKET
mvn clean package -Dmaven.test.skip=true
3,start ROCKET---MQ...
cd /root/rocketmq-all-4.7.0-source-release/distribution/target/rocketmq-4.7.0/rocketmq-4.7.0
[root@devops172202047 rocketmq-4.7.0]# nohup sh bin/mqnamesrv &
4,start ROCKET---NG...
cd /opt/rocketmq-externals/rocketmq-console/target/
java -jar rocketmq-console-ng-1.0.1.jar &
#或者加入addr和port
java -jar rocketmq-console-ng-1.0.1.jar --server.port=7777 --rocketmq.config.namesrvAddr=localhost:9876 &
5,访问rocketmq-ng 进行操控

网友评论