【java开发消息中间件MQ篇】之如何保证mq消息按顺序执行

253 阅读2分钟

前言: mq的种类很多,知识点也很多,容我娓娓道来,此文章仅代表鄙人的总结和理解,如有错漏,欢迎指正...

单机mq的话存在天然的顺序执行
当一个队列有多个消费者的时候,就会存在并发消费问题,并发消费会导致顺序错乱

解决方案:

一:普通消息中心(activemq、rabbitmq等),指定设置好该消息使用独有消费者即可

二:分布式消息中心(rocketmq、kafka等)

topic的概念: topic是描述该消息的属性,topic里面有多个queue队列

broker的概念: broker就是mq服务器

partition的概念: partition是分区,partition放在tipic里面管理,topic会为多个partition分配一个leader进行负载均衡 分布式的消息中心的话,主要就是把带有顺序的消息发送到某一个broker server服务器下,并这个消息被同一个消费者消费,避免并发消费

Kafka中涉及的一些基本概念和名词解释:

1、Broker:Kafka集群包含一个或多个服务器,这些服务器被称为Broker。

2、Topic:逻辑上同Rabbit的Queue队列相似,每条发布到Kafka集群的消息都必须有一个Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个Broker上,但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)

3、Partition:Partition是物理概念上的分区,为了提供系统吞吐率,在物理上每个Topic会分成一个或多个Partition,每个Partition对应一个文件夹(存储对应分区的消息内容和索引文件)。

4、Producer:消息生产者,负责生产消息并发送到Kafka Broker。

5、Consumer:消息消费者,向Kafka Broker读取消息并处理的客户端。

6、Consumer Group:每个Consumer属于一个特定的组(可为每个Consumer指定属于一个组,若不指定则属于默认组),组可以用来实现一条消息被组内多个成员消费等功能。

参考博客:
关于MQ的几件小事(五)如何保证消息按顺序执行

更多相关【java开发消息中间件MQ篇】系列文章,请查阅我的个人博客哦...


结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)