前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >消息中间件如何保证顺序性

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

作者头像
小土豆Yuki
发布2022-06-24 14:08:39
6580
发布2022-06-24 14:08:39
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

某个公司面试真题,消息中间件如何保证消息的顺序性

首先我们常用的消息中间有kafka和Rabbitmq,我们今天就说说这两种中间件的顺序问题

RabbitMQ

一个queue,多个consumner进行消费,比如向Rabbitmq中发三条消息,而我们的三个消费者进行消费,有的消费者吞吐量高,就先进行消费了,就会导致顺序问题,如下图

解决方案

消息顺序问题,我们有两种方案

  1. 建立多个queue,让每一个queuq对应一个消费者,
  2. 一个queue,一个消费者,然后消费者内部使用队列进行排序,然后交给底层不同的线程处理

基本思想都是一样,就是每一个队列都有一个线程去消费,如下图

kafka

我们知道kafka的消息在每一个分区是有顺序的,但是整体是无顺序的,当我们消费者消费同一个分区时候理论是可以保证消息的顺序性,仅仅当我们的消费者只有一个线程进行消费的时候,这种性能会很差,因此如果存在多个线程消费就会导致顺序问题

解决方案

我们可以在消费者中建立多个队列,然后根据相同的可以,放入同一个queue中,然后每一个队列🈶一个消费者去消费,这样就可以保证了消息的顺序性,如下图

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档