前言
每种mq都有不同的特点,他们的诞生原因都是基于不同的需求原点,开发语言也不尽相同。
1、rocketmq的术语
1)consumer
消息的消费者,主要负责消费产生的消息,可以分为 广播式消费、集群式消费、以及是否顺序消费(如果顺序消费,当消费失败时,将会堵住,并无限消费-Integer.MAX_VALUE-当前消息知道成功,如果为非顺序消费,最大为16)
1.1)tag
消息标签,每个消息携带的标签,可以用来区别消息,如果仅仅想订阅指定标签的消息,tag将会很有用
1.2)group
消费者的group,可以理解为消费者的角色
2)producer
消息的生产者,主要生产消息,发送消息时可以自定义主题的队列选择器,发送到特定队列(发送到同一个队列,可以保证消息的顺序性)
2.1)group
生产者的group,即生产者的角色,可以理解为一类producer,当发送分布式事务消息时,如果producer中途意外宕机,broker会主动回调producer group内的任意一台机器来确认事务状态
3)broker
消息的持有者,消息以文件的方式保存到本地,消息存储到本地时有两种模式分别为sync、async(看具体需要,当然是异步刷盘性能更好),broker的角色分为MASTER\SLAVE,broker采用多主多从模式(一个MASTER对应多个SALVE,并且他们的名称必须相同,以及brokerId为0表示Master,非0表示Slave)
4)topic
消息的主题,每个主题新建时有16个队列(从管理配置界面新建主题默认16个),每个队列中的消息均为FIFO
5)nameserver
消息的守门人,负责集群的负载均衡,以及集群状态维护,保存集群的状态在缓存当中