RocketMQ —— 发送和接收消息

文章目录

  • RocketMQ —— 发送和接收消息
    • 消费者分类
      • DefaultMQPushConsumer
        • 如何使用
          • Consumer的GroupName
          • NameServer
          • Topic
        • 处理流程
        • 流量控制
      • DefaultMQPullConsumer
      • Consumer启动关闭流程

RocketMQ —— 发送和接收消息

消费者分类

消费者可分为两种类型

  • DefaultMQPushConsumer
    系统控制读取操作,收到消息自动调用传入的处理方法来处理;
  • DefaultMQPullConsumer
    读取操作大部分功能由研发人员自主控制;

DefaultMQPushConsumer

如何使用

使用DefaultMQPushConsumer需要设置好各种参数和传入处理消息的函数。
系统收到消息自动调用处理函数来处理消息,自动保存Offset,并且加入新的DefaultMQPushConsumer后会自动做负载均衡。

DefaultMQPushConsumer三个必要参数:

  • Consumer的GroupName
  • NameServer地址和端口号
  • Topic名称

详细介绍:

Consumer的GroupName

用于多个Consumer组合,提高并发处理能力,GroupName需要和消息模式(MessageModel)配合使用。

RocketMQ支持两种消息模式:Clustering 和 Broadcasting。

  • Clustering(聚簇)
    同一个ConsumerGroup(GroupName相同)里的每个Consumer只消费所订阅的一部分内容,同一个ConsumerGroup所有的Consumer一共消费的内容是所订阅Topic的全部内容,从而达到负载均衡。
    RocketMQ —— 发送和接收消息_第1张图片
  • Broadcasting(广播)
    同一个ConsumerGroup里的每个Consumer都能消费到所有订阅Topic的全部消息,一个消息会被多次分发,被多个Consumer消费。
    RocketMQ —— 发送和接收消息_第2张图片
NameServer

地址和端口允许填写多个,用分号“;”分割,消除单点导致系统崩溃的问题,例如:“ip1:port1;ip2:port2;ip3:port3”;

"port1、port2、port3"可以是一样,“ip”必须不同自定义的;

Topic

Topic名称用来标识消息类型,需提前创建(通过RocketMQ-Console后台或者MQ-Admin创建),如果不需要消费Topic下的所有消息,可通过指定Topic下的Tag进行消息过滤,例如:

// 消费TopicTest的Topic下,带有tag1或tag2或tag3的消息(Tag是在发送时设置的)
Consumer.subscribe ("TopicTest", "tag1 || tag2 || tag3");
// 消费TopicTest下所有消息
Consumer.subscribe ("TopicTest”, "*");
// 同上,消费TopicTest下所有消息
Consumer.subscribe ("TopicTest", null);

处理流程

源码分析[待补充]

流量控制

源码分析[待补充]

DefaultMQPullConsumer

Consumer启动关闭流程

你可能感兴趣的:(技术总结,弗兰克与MQ)