如何保证MQ消息的顺序性?
1)RabbitMQ:拆分成多个queue,每个queue对应一个customer;或者就一个queue对应一个customer,但是这个customer内部用内存队列,然后分发给底层不同的worker来处理
2)Kafka:
生产者写入一个partition中的数据一定是有顺序性的;
生产者在写数据的时候,可以指定一个key,比如说订单系统指定订单id为key,
这个订单相关的数据,一定都会被分发到一个partition中,
而且这个partition中的数据一定是有顺序
消费者从partition中取出数据的时候一定是按照顺序的
但是消费者内部并发线程执行从partition中取出的数据导致顺序混乱
解决办法:一个topic,一个partition,一个consumer,内部单线程消费,写N个内存queue,然后N个线程分别消费一个内存queue即可
标签:
面试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统