動(dòng)機(jī)背景
早起使用ACTIVEMQ做社交棚亩,大數(shù)據(jù)管道蓖议,交易及其他后面量大了。根據(jù)我們的預(yù)演讥蟆,隨著隊(duì)列和虛擬主題的使用勒虾,ActiveMQ IO模塊達(dá)到了瓶頸。我們盡力通過節(jié)流瘸彤、斷路器等來解決這個(gè)問題修然,但效果不佳。因此钧栖,我們開始關(guān)注當(dāng)時(shí)流行的通訊解決方案Kafka低零。Kafka不能滿足我們的要求,特別是在低延遲和高可靠性方面拯杠。
我們決定發(fā)明一個(gè)新的消息傳遞引擎來處理更廣泛的用例集掏婶,從傳統(tǒng)的發(fā)布/子場(chǎng)景到高容量的實(shí)時(shí)零損失容忍事務(wù)系統(tǒng)RocketMQ,目前有100多家公司在他們的業(yè)務(wù)中使用開源版本的RocketMQ潭陪。
The following table demonstrates the comparison between RocketMQ, ActiveMQ and Kafka (Apache’s most popular messaging solutions according to?awesome-java):
主流MQ的對(duì)比
ActiveMQJava雄妥,.NET,C++等依溯。推送模型老厌,支持OpenWire,STOMP黎炉,AMQP枝秤,MQTT,JMS獨(dú)占消費(fèi)者或排他隊(duì)列可以確保訂購(gòu)支撐不支持支撐支撐不支持支持使用jdbc和高性能日志(如Level DB慷嗜、kahadb)進(jìn)行非车淼快速的持久化。支撐支撐支持庆械,取決于存儲(chǔ)薇溃,如果使用kahadb,則需要一個(gè)動(dòng)物園管理員服務(wù)器缭乘。不支持默認(rèn)配置是低級(jí)別的沐序,用戶需要優(yōu)化配置參數(shù)。支撐
卡夫卡Java,Scala等支持TCP確保分區(qū)內(nèi)消息的順序不支持支持策幼,使用異步生成器不支持支持下邑时,可以使用Kafka流過濾消息。不支持高性能文件存儲(chǔ)支持偏移量不支持支持垄惧,需要一個(gè)動(dòng)物園管理員服務(wù)器刁愿。不支持Kafka使用鍵值對(duì)格式進(jìn)行配置。這些值可以從文件中提供到逊,也可以以編程方式提供铣口。支持,使用終端命令公開核心指標(biāo)觉壶。
RocketMQJava脑题,C++,Go拉模型铜靶,支持TCP叔遂,JMS,OpenMessage確保嚴(yán)格的消息排序争剿,并能優(yōu)雅地?cái)U(kuò)展已艰。支撐支持同步模式,以避免消息丟失蚕苇。支撐支持基于SQL 92的屬性篩選表達(dá)式支撐高性能低延遲文件存儲(chǔ)支持時(shí)間戳和偏移量2表示不支持支持哩掺,主從模型,沒有其他工具包支撐開箱即用涩笤,用戶只需注意幾個(gè)配置即可嚼吞。支持豐富的web和終端命令來公開核心指標(biāo)
安裝
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
修改配置文件(根據(jù)你的內(nèi)存資源豐儉由人)
將三個(gè)文件中的Xms,Xmx,Xmn三個(gè)參數(shù)修改為合適的數(shù)值
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
啟動(dòng)服務(wù)
1,啟動(dòng)rocketmq nameserver
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...為成功
2,啟動(dòng)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
出現(xiàn)SendResult [sendStatus=SEND_OK, msgId= ...為發(fā)送成功
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
出現(xiàn)ConsumeMessageThread_%d Receive New Messages: [MessageExt...為消費(fèi)成功
安裝可視化控制臺(tái)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設(shè)置為false蹬碧,配置rocketmq.config.namesrvAddr為 本機(jī)地址: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 進(jìn)行操控