RocketMQ的安装、集群、常用命令
学习资料
阿里云官方英文、最新的Demo和Guidence
http://rocketmq.apache.org/docs/transaction-example/
阿里云的帮助文档啊,超级详细而且有Demo
https://help.aliyun.com/document_detail/29551.html
阿里云在github上的Demos(包括整合Spring 和简单TCP的形式)
https://github.com/AliwareMQ/mq-demo
简单且有Demo的简书博客系列,里面还有Dubbo先关的博客,非常好
https://www.jianshu.com/u/8e1110d27153
零度的RMQ系列博客
https://mp.weixin.qq.com/s/lxzD8HZofMuMRKS-zcP85A
官方API
http://rocketmq.apache.org/docs/simple-example/
RocketMQ和Kafak的区别
https://mp.weixin.qq.com/s/KfBruI-tOz-eJuM2fgqyew
java快速入门
https://www.cnblogs.com/jiangxinlingdu/p/7892593.html
RocketMQ 4.3发布,支持分布式事务 还有分布式事务的常见解决方案
https://baijiahao.baidu.com/s?id=1607829339793465291&wfr=spider&for=pc
10分钟超级详细的入门
http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/
RocketMQ和Kafak的区别
- 卡夫卡单机写入TPS 百万级,而RocketMQ为万级别
- 卡夫卡消费失败不支持重试,RocketMQ消费失败支持定时重试,每次重试间隔时间顺延
- 卡夫卡不支持分布式事务消息,阿里云MQ支持分布式事务消息,未来开源版本的RocketMQ也有计划支持分布式事务消息
对比:Kafka性能最好,但是不支持事务;RabbitMQ对一致性、稳定性和可靠性支持好,但是性能和吞吐量支持一般;rocketMQ兼顾了性能和分布式事务和可靠性。
- Kafka:基于Pull的模式来处理消息消费
- 追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制
- 不支持事务,对消息的重复、丢失、错误没有严格要求
- 适合产生大量数据的互联网服务的数据收集业务。
RocketMQ是阿里开源的消息中间件,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点它对消息的可靠传输及事务性做了优化
RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。
功能介绍
- 地址解耦,生产者和消费者彼此不需要知道彼此,比如IP
- 故障解耦,就算消费者挂了,只要把消息存在消息服务器上,不影响生产者生产,业务照常进行
- 肖峰控流,消费者根据自己的能力去从消息服务器取消息,这样不仅节省生产者的线程等待,而且让消费者洪峰时的访问数可控
- 消息推送,支持订阅和广播模式,一对多,多对多发送消息
- 日志监控,消息服务器自带日志功能
rocketmq可视化监控界面
- 在CSDN上下载已经压缩好的jar包:rocketmq-console-ng-1.0.0.jar
- 修改配置文件 application.properties 里面的nameAddress
- 启动 :
-jar rocketmq-console-ng-1.0.0.jar``` - 然后locolhost:8082 进行查看# linux下 rocketmq的安装和使用官方的单机安装步骤(坑爹啊,但是windows下不存在这个问题,windows默认 256M的内存)http://rocketmq.apache.org/docs/quick-start/?_sm_au_=iQVrfSMsRNHDBmMQ注意事项:1. rocketmq的默认的runserver.sh 和runbroker.sh里面都最小4G。需要修改 默认的配置
JAVA_OPT=”${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
虚拟机 origin:192.168.29.129
虚拟机 clone :192.168.29.132
修改hosts文件: nano /etc/hosts
192.168.29.129 rocketmq-server1
192.168.29.132 rocketmq-server2
#broker-a的 Master配置文件
brokerClusterName = rocketmq-cluster
brokerName = broker-a
brokerId = 0
namesrvAddr = rocketmq-server1:9876;rocketmq-server2:9876
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
listenPort = 10911
autoCreateTopicEnable = true
broker-a的slave配置文件 (brokerName一样,brokerId不一样,brokerRole不一样
brokerClusterName = rocketmq-cluster
brokerName = broker-a
brokerId = 1
namesrvAddr= rocketmq-server1:9876;rocketmq-server2:9876
deleteWhen = 04
fileReservedTime = 48
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
listenPort = 11911
autoCreateTopicEnable = true
broker-b的Master配置文件
brokerClusterName = rocketmq-cluster
brokerName = broker-b
brokerId = 0
namesrvAddr=rocketmq-server1:9876;rocketmq-server2:9876
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
listenPort = 10911
|
分别先启动两台主机的nameServer
nohup sh bin/mqnamesrv &
再分别启动Broker的Master
nohup sh bin/mqbroker -c ./conf/broker1.properties &
最后可以通过查看集群节点
sh bin/mqadmin clusterList
或者通过Console来查看可视化的集群情况
ifconfig docker0 down
brctl delbr docker0
|
nohup sh bin/mqbroker -c ./conf/broker-a.properties &
cd /usr/developer/rocketmq/distribution/target/apache-rocketmq
启动server
nohup sh bin/mqnamesrv &
启动broker
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
停止
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv
查看集群情况
sh bin/mqadmin clusterList
查看 topic 列表
sh bin/mqadmin topicList -n 127.0.0.1:9876
查看 topic 状态
sh bin/mqadmin topicStatus -n 127.0.0.1:9876 -t MyTopic (换成你想查询的 topic)
查看 topic 路由
sh bin/mqadmin topicRoute -n 127.0.0.1:9876 -t MyTopic
```