消息队列CMQ(Cloud Message Queue)是腾讯云提供的一款高可靠、高可用的分布式消息队列服务,适用于异步通信、解耦系统、流量削峰等多种业务场景。以下是关于消息队列CMQ的基础概念、优势、类型、应用场景,以及可能遇到的问题和解决方案的详细介绍:
基础概念
消息队列是一种应用程序间的通信方法,通过在消息传输系统中传递消息来处理异步任务。CMQ是一种分布式消息队列服务,具有高可用性、高吞吐量和低延迟的特点。
优势
- 高性能:单实例QPS达到50000,支持亿级消息收发。
- 高扩展性:队列数量及存储容量可扩展性强,底层系统自动弹性伸缩。
- 高可靠性:消息服务每条消息在返回给用户写成功之时就确保数据已被复制3份写到不同物理机上。
- 业务安全:提供多维度的安全防护和防DDoS攻击服务,每个消息服务提供单独命名空间,客户间数据严格隔离。
类型
- 点对点消息队列:消息被消费后从队列中移除,每个消息只有一个消费者。
- 发布/订阅消息队列:消息可以被多个订阅者接收,适用于广播场景。
- 延时消息:消息发送到队列后,在设置的延时时间后才对消费者可见。
- 消息回溯:已消费且确认删除的消息可以重新消费,用于业务对账、系统重试等场景。
- 广播消费:每条消息推送给集群内所有的消费者,保证消息至少被每个消费者消费一次,主要用于消息推送和缓存同步。
- 顺序消息:确保同一组消息按顺序处理,保证消息的顺序消费。
- 死信队列:用于处理无法被正常消费的消息,达到最大重试次数后,若消费依然失败,则将消息发送到该消费者对应的特殊队列中。
- 主题路由匹配:在消息广播基础上实现了消息的自动分发,订阅者可以指定bindingKey,即路由规则。
- 多地域服务:提供北京、上海、广州地域的多地域服务,支持跨地域的安全消息服务。
- 消息过滤:支持根据消息属性进行过滤,可以根据业务需求选择性地消费消息。
- 监控和报警:提供丰富的监控和报警功能,可以及时发现和处理异常情况。
- 消息生命周期管理:支持设置消息的最长存活时间,消息在本队列中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除。
- 消息接收长轮询等待时间:长轮询等待时,一个消息消费请求只会在取到有效消息或长轮询超时时才返回响应,类似于Ajax请求的长轮询。
- 取出消息隐藏时长:每条Message都有个默认的VisibilityTimeout,Worker在接收到消息后,timeout就开始计时了。如果Worker在timeout时间内没能处理完Message,那么消息就有可能被其他Worker接收到并处理。
- 不可见消息数:消息被消费者取走后,转换为不可见(Inactive),如果在经过了VisibilityTimeout后仍未被消费,则会重新转换为可见(Active)。需要消费者在线时才能统计数据,无消费者在线时展示为0。。
- 消息堆积容量上限:为每个队列设置了一定的容量上限,单个队列的堆积消息上限为1亿条,最小值为1百万条。。
- 指定时间范围:当开启消息回溯后可配置时间范围项,控制台默认不开启。开启后时间默认跟消息生命周期设置相同值。
- 最大可回溯时间点:当前时间-设置的可回溯时间范围。消息生产时间在这个值之前的不可回溯。
- 可回溯存储空间:开启回溯消息后,如果持久存储的消息超过此最大存储空间,则会从后向前删除(优先删除旧数据)。存储空间范围:1GB-10GB,设置较大可能会产生昂贵的存储费用。。
- 消息加密:支持消息加密,保证消息传输的安全性。
- 访问控制:支持基于腾讯云平台多维度的安全防护,抵御网络攻击,保护您的业务隐私。。
- 高可用部署:CMQ的消息队列服务在多个数据中心进行部署,保证了高可用性和容灾能力。
- 弹性扩展:CMQ可以根据实际业务负载自动扩展和收缩,以适应不同规模的消息传递需求。
- 消息顺序保证:CMQ支持消息的有序消费,保证消息按照发送顺序进行处理。
- 消息过滤:CMQ支持根据消息属性进行过滤,可以根据业务需求选择性地消费消息。13。