RocketMQ初探-2不同消息种类的使用

RocketMQ初探-2不同消息种类的使用

目录

  • RocketMQ初探-2不同消息种类的使用
    • 消息分类
      • 基本样例
      • 顺序消息
      • 广播消息
      • 延迟消息
      • 批量消息
      • 过滤消息
      • 事务消息
      • 关于消费者ConsumeFromWhere属性的理解

消息分类

  1. 基本样例
  2. 顺序消息
  3. 广播消息
  4. 延迟消息
  5. 批量消息
  6. 过滤消息
  7. 事务消息

基本样例

消息生产者
RocketMQ初探-2不同消息种类的使用_第1张图片
消息消费者
RocketMQ初探-2不同消息种类的使用_第2张图片

顺序消息

背景:对于不同生产者以先后顺序发送的消息,到达broker消费的时候可能不会按照发送的顺序执行,比如第一个消息执行逻辑是num+1,第二个消息是num * 3,那么消息的顺序会影响最终的一个计算结果。
所以顺序消息是保证局部消息有序,而不是保证全局消息有序。
保证生产者将关联消息发送到同一条消息队列,同时保证消费者从同一条消息队列读取到关联消息。
顺序消息生产者
RocketMQ初探-2不同消息种类的使用_第3张图片

顺序消息消费者
RocketMQ初探-2不同消息种类的使用_第4张图片

广播消息

背景:相比于集群模式,一个消息往集群消费者发送,会保证每个消息在一个消费者组里只会被消费一次。
广播模式:会往订阅了该topic下的所有消费者推送。
RocketMQ初探-2不同消息种类的使用_第5张图片
发送模式枚举
RocketMQ初探-2不同消息种类的使用_第6张图片

延迟消息

背景:业务场景中可能消息需要指定时间后触发,可以使用到RocketMq的延迟消息,设置一个参数即可。
RocketMQ初探-2不同消息种类的使用_第7张图片

批量消息

背景:减少网络io成本,将多个消息一次性发送。
RocketMQ初探-2不同消息种类的使用_第8张图片
对消息体做一个总的长度限制,分批发送
RocketMQ初探-2不同消息种类的使用_第9张图片

过滤消息

通过tag过滤(过滤条件单一,只能根据tag)
生产者还是根据指定的tag发送消息
RocketMQ初探-2不同消息种类的使用_第10张图片
消费者根据tag来过滤
RocketMQ初探-2不同消息种类的使用_第11张图片

通过sql过滤 给消息设置指定属性
RocketMQ初探-2不同消息种类的使用_第12张图片
消费者根据指定的sql表达式过滤
RocketMQ初探-2不同消息种类的使用_第13张图片

事务消息

RocketMQ初探-2不同消息种类的使用_第14张图片
消费者逻辑
RocketMQ初探-2不同消息种类的使用_第15张图片
生产者逻辑
RocketMQ初探-2不同消息种类的使用_第16张图片

关于消费者ConsumeFromWhere属性的理解

RocketMQ初探-2不同消息种类的使用_第17张图片

  1. 如果一个消费者组之前已经启动过,再次启动后,无论consumeFromWhere设置何值,都会根据在broker记录的offset进行消费
  2. 如果是一个新启动的消费者组,且消费者组订阅的消息仍在broker的内存中,无论consumeFromWhere设置何值,都将从0开始消费
  3. 如果是一个新启动的消费者组,且消费者组订阅的消息不在broker的内存中,根据consumeFromWhere设置的获取对应的offset进行消费
    参考网址:
    https://www.mpoom.cn/2021/09/06/rockermq/rocketmq-zhong-consumefromwhere-xiang-jie/
    https://blog.csdn.net/weixin_39848998/article/details/111680646

你可能感兴趣的:(RocketMQ,java,分布式,java-rocketmq)