顺序消息和普通消息的区别是什么
最大的区别在于是否能保证消息生产和消费的顺序一致。
对于顺序消息,消息均根据ShardingKey进行区块分区,同一分区内的消息消费满足先进先出,保证分区有序,不同分区的消息消费顺序不做要求。
普通消息则没有该项保证,消息消费的顺序跟生产的顺序不一定保证一致性。
RocketMQ集群消费和广播消费区别是什么
使用集群消费模式时,MQ内任意一条消息只需被订阅组集群内的任意一个消费者消费即可。
使用广播消费模式时,MQ内每条消息都会投递到订阅组集群的所有消费者,每条消息至少被每个消费者消费一次。
多个订阅组订阅同一个主题时消息如何被消费
RocketMQ中订阅关系并非是一对一的,一个主题可以被一个或多个订阅组订阅,但不同订阅组之间的消费是互不影响的,它们各自维护自己在当前主题的消费偏移信息,每一条消息都会被订阅该主题的订阅组接收到。
消息消费失败是否会有重试机制
在push消费模式下,RocketMQ在消费者消费消息失败后会通过将消息重新投递到该订阅组的重试队列在一定时间后会被消费者重新消费到,如果多次失败则会多次重复上述的重试过程,超过最大次数之后(创建订阅组时可配置)会将消息投递到死信队列。
消息消费的负载均衡策略是什么
在push消费模式下,RocketMQ的一个Queue同一时间内只会被一个消费者消费,一个主题内的全部Queue会根据负载均衡策略(默认的是根据平均分配原则)分配给订阅组的全部消费者。
消息消费时是否会出现重复消费的情况
RocketMQ可能出现重复消费的情况,比如在Push模式的消费模式下,由于网络等原因可能出现本地消费者实际消费到超过Broker保存的消费偏移的消息,如果此时发生消费者下线重新上线就会拉取到已经消费过消息。建议客户端的逻辑保证消费的幂等性。