RocketMQ 核心
Producer
一个producer 发送由业务系统产生的消息给 broker。RocketMQ提供了多种发送方式:同步,异步,one-way。
Producer 集群
是许多有同样功能的producer。不同的producer连接同一个broker去提交或者回滚事务防止原始的producer在事务后崩溃。
Consumer
一个 Consumer 从broker拉取消息然后被应用消费。在用户应用中,提供了两种类型的Consumer:
-
PullConsumer
Pull consumer 主动得拉取消息从broker,一旦拉取到拉取批量消息,用户应用初始化消费进程。 -
PushConsumer
Push consumer, 从另一个角度, 封装了 message pulling(消息拉取), consuming progress(消费进程) and maintaining other work inside(维护其他), 留一个回调接口给用户去实现,这个回调接口方法会在消息到达时被执行。
Consumer 集群
和producer 集群类似,是一群有相同功能的consumer的集合。
消费者集群是一个伟大的概念,在消息消费方面实现了负载均衡和容错,非常简单。
Topic
Topic是一个producer传输消息和consumer消费消息的范围集合。Topic和P和C有非常紧密的关系。特别的是,一个Topic可能有0个,1个或者多个Producer来发送。当然,一个producer也可以发送消息给不同的topics。在Consumer方面,一个Topic可能被0个,1个,多个consumer订阅。一个消费者集群,相似的来说,可以订阅1个或者多个Topic只要保持集群订阅一致。
Message
Message是传送的信息。一个消息必须有topic,可以被你要发送的地方的作为地址解读。一个Message还可能有一个可选的optional和额外的键值对,比如你可以设置一个业务KEY给你的Message并在broker服务器查找消息去定位开发中的问题。
Message Queue
Topic被分为一个或者多个子Topic。成为Message queen。
Tag
Tag,另一种子Topic,提供额外的灵活性给用户,有了Tag,从同一业务模块来的有不同目的的消息可以有相同的Topic和不同的Tag,tag会在帮助你的代码整洁连贯,并且可以方便RocketMQ提供查询系统。
Broker
Broker 是主要组成部分. 接受来自Producer的消息,存储他们并准备去处理来自consumer的拉取请求。 他能存储元数据有关消息,包括消费者集群,消费进程偏移和topic/queue信息。
Name Server
充当的是路由信息提供者,P/C的客户端查找topics时找到对应的的broker集合。
消息类型
-
节点
-
订阅模式
Message Order
当使用DefaultMQPushConsumer时,你会有序的消费消息或者并发消费。
-
有序
有序消费消息意味着消息被按照producer发送一样的次序消费对每一个消息队列。如果你在处理强制全局次序的场景,需要确认你使用的topic是否只有一个消息队列。 -
并发
当并发消费消息时,对每一个消费者客户端,消费消息的最大并发只被线程池限制