RocketMq之简介

RocketMq之简介_第1张图片

 

Producer

消息生产者,负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到Broker 服务器。RocketMQ 提供多种发送方式,同步发送、异步发送、顺序发送、单向发送。同步和异步方式均需要 Broker 返回确认信息,单向发送不需要。

Consumer

负责消费消息,一般是后台系统负责异步消费。一个消息消费者会从 Broker 服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费

NameServer

名称服务充当路由消息的提供者。生产者或消费者能够通过名字服务查找各主题相应的 Broker IP 列表。多个 Namesrver 实例组成集群,但相互独立,没有信息交换。

BrokerServer

消息中转角色,负责存储消息、转发消息。 代理服务器在 RocketMQ 系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。

Message

消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。RocketMQ 中每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key。系统提供了通过Message IDKey查询消息的功能。

Topic

表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是 RocketMQ 进行消息订阅的基本单位。

Tag

为消息设置的标志,用于同一主题下区分不同类型的消息。可以理解为 Topic 的二级分类。来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签。标签能够有效地保持代码的清晰度和连贯性,并优化 RocketMQ 提供的查询系统。消费者可以根据 Tag 实现对不同子主题的不同消费逻辑,实现更好的扩展性。

RocketMq之简介_第2张图片

  1. Broker在启动的时候去向所有的NameServer注册,并保持长连接,每30s发送一次心跳
  2. Producer在发送消息的时候从NameServer获取Broker服务器地址,根据负载均衡算法选择一台服务器来发送消息
  3. Conusmer消费消息的时候同样从NameServer获取Broker地址,然后主动拉取消息来消费

整个流程总结:

  1. 首先先将BrokerServer注册至NameServer中,其中包含的信息有我这个BrokerServer上存放的有哪些topic,我的IP是什么
  2. NameServer上存放的是各个BrokerServerIP及所存放的对应topic
  3. Producer生产者发送信息,会定义对应的IP及存放在哪个topic上,这时Producer发送到NameServer查看,该topic需要放置在哪个BrokerServer上,分析到放置的位置,就直接存放到对应BrokerServer
  4. Consumer消费者进行拉取消息时,会指定拉取哪个topic下的消息;这时也是反馈到NameServer确定该topic是存放在哪个BrokerServer中,再到BrokerServer中某台中进行拉取消息

其实是可以把NameServer与BrokerServer看成EurekaServer与 Eureka Client ,需要将客户端注册到服务端上,后面才可以了解到对应的topic是在哪台BrokerServer上进行查看

 

你可能感兴趣的:(MQ,java)