- 应用解耦
- 异步消息
- 流量削峰
- 即时通讯
Topic:队列集合,它是消息的逻辑分类,比如有订单消息Topic和库存消息Topic,消费者通过该标识取对应消息;
Topic->Queue:Topic下可以有多个Queue,使得消息存储可以分布式集群化,具有水平扩展能力,这些Queue平均存储消息,持久化的类似数组的数据,是无限的,使用offset访问,offset相当于数组下标;
Tag:根据用途,Topic的细化分类,没错,更精确地标识消息流向;
Group:角色的实例集合;
Consumer消费:广播消费,均摊消费;
广播消费:消费者组的成员重复获得同一消息,于消息划分毫无意义;
集群消费:均摊,多个实例、进程或机器均分消费,例如某个Topic有30条消息,消费组有三个实例,则每个实例各消费10条消息;
数据与索引分离;
NAMESERVER:注册、路由;
Broker:RocketMQ系统的主要角色,其实就是MQ,接收Producer的消息,提供Consumer拉取消息的接口,灾难恢复,警报;
push||pull:消息订阅或消息拉取;
黑盒式:先不必关心内部实现;
Master节点:双Master,个人学习实践;
双主机:同步双写;
部署:一主一从;
搭建双Master:
vim /etc/hosts:配置解析
安装:
两种方式:
1解压
2源码打包
解压后即可使用,启动mqnamesrv &,启动mqbroker -n localhost:9876 &,export NAMESRV_ADDR=localhost:9876;
代码:调用生产者、消费者接口;
疑问:
broker启动不了,因为默认需要8G内存;
用官网实例发送和接收消息:
生产:
export NAMESRV_ADDR=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
消费:
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
在控制台可以看到消费日志;