如何保证顺序消费?

  1. 将带有顺序性的消息放入同一个分区partition 或者 放到同一个队列queue

RabbitMQ如何保证消息顺序消费?

  1. 消息要通过routingKey路由到同一个Queue中,并且仅有1个消费者来消费这个队列,注意该队列只能由1个消费者消费,不能由两个消费者进行负载均衡,否则无法保证顺序

Kafka如何保证消息顺序消费?

  1. 将消息放到同一个分区partition中,并且由同一个消费者来进行消费
  2. 如何将有顺序要求的多个消息放到同一个partition中:
    (1). 直接指定某个分区partiton可以
    (2). 通过hash取模,对同一条数据的某个固定值的字段进行取模,得到的一定是相同结果,这样也能放到同一分区

消息顺序消费会带来什么后果?

  1. 由于同一个分区 或 队列只能由一个消费者进行消费,所以不存在负载均衡,可能会导致性能下降
  2. 由于hash取模的特点,可能会造成某个分区partiton消息会很多,某个分区partiton消息会很少的倾斜效应
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐