消息中间件如何保证消息的顺序性?

1 rabbitmq

1.1 rabbitmq顺序会错乱的场景

一个queue,但是有多个consumer

消息中间件如何保证消息的顺序性?_第1张图片
1.2 如何保证消息的顺序性

需要保证消息消费顺序性的数据,写到一个queue中,并只让一个消费者进行消费

消息中间件如何保证消息的顺序性?_第2张图片

2 kafka

2.1 kafka顺序会错乱的场景

kafka本身是不会发生消息顺序错乱
kafka一个patition只有一个消费者消费
加了同一个key的消息,只会进入同一个patition中

顺序错乱发生的情况:消费者内部调用多线程,可能会导致顺序错乱的产生
消息中间件如何保证消息的顺序性?_第3张图片

2.2 如何保证消息的顺序性

使用内存队列,将需要保证顺序的数据,即key相同的数据放到一个内存队列中进行处理,几十ms的处理效率,可以使用多线程进行提高效率。
消息中间件如何保证消息的顺序性?_第4张图片

你可能感兴趣的:(中间件)