Contents
  1. 1. 学习资料
  2. 2. RocketMQ和Kafak的区别
  3. 3. 对比:Kafka性能最好,但是不支持事务;RabbitMQ对一致性、稳定性和可靠性支持好,但是性能和吞吐量支持一般;rocketMQ兼顾了性能和分布式事务和可靠性。
  4. 4. 功能介绍
  5. 5. rocketmq可视化监控界面
  6. 6. broker-a的slave配置文件 (brokerName一样,brokerId不一样,brokerRole不一样
  7. 7. broker-b的Master配置文件
  8. 8. ifconfig docker0 down
  9. 9. brctl delbr docker0

学习资料

阿里云官方英文、最新的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兼顾了性能和分布式事务和可靠性。

  1. Kafka:基于Pull的模式来处理消息消费
  • 追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制
  • 不支持事务,对消息的重复、丢失、错误没有严格要求
  • 适合产生大量数据的互联网服务的数据收集业务。
  1. RocketMQ是阿里开源的消息中间件,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点它对消息的可靠传输及事务性做了优化

  2. 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”

2. rocketmq里面启动broker的命令也有问题啊,必须要设置 允许自动创建Topic才行啊,或者修改 默认的broker.properties文件里面,设置运行自动创建topic

nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &

# linux下,rocketmq集群的搭建
精品博客
https://blog.csdn.net/lovesomnus/article/details/51769977
1. 设置两台机器的 /etc/hosts文件

虚拟机 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

2. 示例的配置文件

#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

3. 启动方式

分别先启动两台主机的nameServer
nohup sh bin/mqnamesrv &

再分别启动Broker的Master
nohup sh bin/mqbroker -c ./conf/broker1.properties &

4. 查看运行情况

最后可以通过查看集群节点
sh bin/mqadmin clusterList

或者通过Console来查看可视化的集群情况

## 注意事项:
1. ifconfig 查看IP,如果有docker0网卡的话,需要删除掉才行,不然两台虚拟机 rmq默认取这个ip

ifconfig docker0 down

brctl delbr docker0

2. 启动的命令一定要注意啊,不能乱指定 nameServer的端口,例如-n 127.0.0.1:9876 ,这里表示只连接本地的nameServer,而不连接其他IP下的nameServer

nohup sh bin/mqbroker -c ./conf/broker-a.properties &

3. 不知道出于什么原因,一台虚拟机上只能开启一个Broker
4. 如果一台机子上能开2个Broker的话,需要设置listenPort,因为默认是10911
# 常用命令

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

```

Contents
  1. 1. 学习资料
  2. 2. RocketMQ和Kafak的区别
  3. 3. 对比:Kafka性能最好,但是不支持事务;RabbitMQ对一致性、稳定性和可靠性支持好,但是性能和吞吐量支持一般;rocketMQ兼顾了性能和分布式事务和可靠性。
  4. 4. 功能介绍
  5. 5. rocketmq可视化监控界面
  6. 6. broker-a的slave配置文件 (brokerName一样,brokerId不一样,brokerRole不一样
  7. 7. broker-b的Master配置文件
  8. 8. ifconfig docker0 down
  9. 9. brctl delbr docker0