RocketMQ初探-2不同消息种类的使用
消息分类
- 基本样例
- 顺序消息
- 广播消息
- 延迟消息
- 批量消息
- 过滤消息
- 事务消息
基本样例
消息生产者
消息消费者
顺序消息
背景:对于不同生产者以先后顺序发送的消息,到达broker消费的时候可能不会按照发送的顺序执行,比如第一个消息执行逻辑是num+1,第二个消息是num * 3,那么消息的顺序会影响最终的一个计算结果。
所以顺序消息是保证局部消息有序,而不是保证全局消息有序。
保证生产者将关联消息发送到同一条消息队列,同时保证消费者从同一条消息队列读取到关联消息。
顺序消息生产者
顺序消息消费者
广播消息
背景:相比于集群模式,一个消息往集群消费者发送,会保证每个消息在一个消费者组里只会被消费一次。
广播模式:会往订阅了该topic下的所有消费者推送。
发送模式枚举
延迟消息
背景:业务场景中可能消息需要指定时间后触发,可以使用到RocketMq的延迟消息,设置一个参数即可。
批量消息
背景:减少网络io成本,将多个消息一次性发送。
对消息体做一个总的长度限制,分批发送
过滤消息
通过tag过滤(过滤条件单一,只能根据tag)
生产者还是根据指定的tag发送消息
消费者根据tag来过滤
通过sql过滤 给消息设置指定属性
消费者根据指定的sql表达式过滤
事务消息
消费者逻辑
生产者逻辑
关于消费者ConsumeFromWhere属性的理解
- 如果一个消费者组之前已经启动过,再次启动后,无论consumeFromWhere设置何值,都会根据在broker记录的offset进行消费
- 如果是一个新启动的消费者组,且消费者组订阅的消息仍在broker的内存中,无论consumeFromWhere设置何值,都将从0开始消费
- 如果是一个新启动的消费者组,且消费者组订阅的消息不在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