消息队列 Pulsar 版 基础概念

这篇说说腾讯云TDMQ Pulsar版的消息分类,包括普通、局部顺序、全局顺序、死信、定时和延时消息,以及重试队列和死信队列的机制与适用场景。 普通消息:吞吐量最大,无顺序要求,适合高并发场景。 局部顺序消息:同一分区内有序,不同分区无序,兼顾性能与顺序。 死信消息:无法正常消费的消息,由重试队列多次失败后投递至死信队列。

相关产品
消息队列 Pulsar 版 产品页,含版本规格、价格与购买入口。

一、消息分类

在消息队列中,根据消息的特性及使用场景,可以将消息作如下分类:

消息类型 消费顺序 性能 适用场景
普通消息 无顺序 最好 吞吐量巨大,且对生产和消费顺序无要求
局部顺序消息 同一分区下所有消息遵循先入先出(FIFO)规则 较好 吞吐量较大,同一分区内有序,不同分区内无序
全局顺序消息 同一 Topic 下所有消息遵循先入先出(FIFO)规则 一般 吞吐量一般,全局有序,单分区
死信消息 – – 无法正常消费的消息
定时消息 消息在发送至服务端后,推迟到某个时间点被消费 存在1秒左右误差 在某个指定时间点进行消息的消费
延时消息 消息在发送至服务端后,推迟一段时间后再被消费 存在1秒左右误差 在指定的时间间隔后进行消息消费

二、普通消息

普通消息是一种基础的消息类型,由生产投递到指定 Topic 后,被订阅了该 Topic 的消费者所消费。普通消息的 Topic 中无顺序的概念,可以使用多个分区数来提升消息的生产和消费效率,在吞吐量巨大时其性能最好。

三、局部顺序消息

局部顺序消息相较于普通消息类型,多了一个局部有顺序的特性。即同一个分区下,其消费者在消费消息的时候,严格按照生产者投递到该分区的顺序进行消费。局部顺序消息在保证了一定顺序性的同时,保留了分区机制提升性能。但局部顺序消息不能保证不同分区之间的顺序。

四、全局顺序消息

全局顺序消息最大的特性就在于,严格保证消息是按照生产者投递的顺序来消费的。所以其使用的是单分区来处理消息,用户不可自定义分区数,相比前两种消息类型,这种类型消息的性能较低。

五、死信消息

死信消息是指无法被正常消费的消息。TDMQ Pulsar 版会在创建新的订阅(消费者确定了与某个 Topic 的订阅关系)时自动创建一个死信队列用于处理这种消息。

六、定时消息

消息在发送至服务端后,实际业务并不希望消费端马上收到这条消息,而是推迟到某个时间点被消费,这类消息统称为定时消息,可以看成是延时消息的一种特殊用法,其实现的最终效果与延时消息一致。

七、延时消息

消息在发送至服务端后,实际业务并不希望消费端马上收到这条消息,而是推迟一段时间后再被消费,这类消息统称为延时消息。

八、重试队列

重试队列是一种为了确保消息被正常消费而设计的队列。当某些消息第一次被消费者消费后,没有得到正常的回应,则会进入重试队列,当重试达到一定次数后,停止重试,投递到死信队列中。

由于实际场景中,可能会存在的一些临时短暂的问题(如网络抖动、服务重启等)导致消息无法及时被处理,但短暂时间过后又恢复正常。这种场景下,重试队列的重试机制就可以很好解决此类问题。

九、死信队列

死信队列是一种特殊的消息队列,用于集中处理无法被正常消费的消息的队列。当消息在重试队列中达到一定重试次数后仍未能被正常消费,TDMQ Pulsar 版会判定这条消息在当前情况下无法被消费,将其投递至死信队列。

实际场景中,消息可能会由于持续一段时间的服务宕机,网络断连而无法被消费。这种场景下,消息不会被立刻丢弃,死信队列会对这种消息进行较为长期的持久化,用户可以在找到对应解决方案后,创建消费者订阅死信队列。

赞 (0)
上一篇 4天前
下一篇 4天前