文档简介:
Q:分布式消息服务是否提供对消息的先入先出(FIFO)访问?
A:支持。DMS创建队列时,可以选择“普通队列”和“有序队列”。有序队列适用于对顺序要求较高的场景,严格按照接收消息的顺序消费消息;普通队列适用于需要高并发度的场景,由于采用分布式设计,不能保证完全按照接收消息的顺序消费消息。
Q:分布式消息服务是否提供“至少一次”的消息交付功能?
A:是的。分布式消息服务会在多台服务器上存储消息的副本,以实现冗余和高可用性。在极少数情况下,当您接收或删除消息时,存储消息副本的服务器之一可能不可用。如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且您在接收消息时可能会再次获得该消息副本。这被称为“至少一次”交付。因此,您必须将您的应用程序设计为幂等的应用程序(即,如果您的应用程序多次处理同一条消息,则不得受到不利影响)。
Q:消息在服务器保存多长时间?
A:保存至少72小时,超过72小时的消息将会被删除。
Q:消息的长度限制是多少?
A:每条消息的大小不超过512KB(包括消息体和消息属性)。
Q:分布式消息服务是否能保证消息不重复?
A:不能保证消息不重,但是在绝大部分情况下,消息是不重复的,在网络异常情况下,会出现消息重复。
Q:如何保证消息队列中的消息是安全的?
A:分布式消息服务提供了安全可靠的身份验证机制,确保消息队列受到保护,防止遭到未经授权的访问。
通过控制台管理消息时,必须完成口令认证,并受到domain以及project限制。
使用API接口进行消息发送与消费,需先完成token认证,并在业务接口通信请求报文头中携带获取到的token。同时还需要使用AK(Access Key ID)、SK(Secret Access Key)对请求进行签名,才能通过API网关发送请求。关于token认证以及AK/SK文件获取,请参考《分布式消息服务 API参考》。
Q:每个项目可以创建多少队列?
A:每个用户可以有多个项目(project),每个project默认最多可以创建五个队列,如果您想创建更多队列,请联系客服申请增加配额。
Q:每个队列可以创建多少消费组?
A:每个队列最多可以创建三个消费组。
Q:消息较少时单次消费不能获取指定数量的消息?
A: 一个队列中的消息存储在多个不同的分区,多分区设计提升了消费并发度,最大可同时处理同一个消费组的多个消费请求。为了性能考虑,每个消费请求只能消费一个分区中的消息,避免跨多个分区缓存管理和访问带来性能损失,当消息数量较少时,单个分区的消息数量可能小于指定的消费消息数量,这样单次消费请求返回的消息数会少于指定的消费消息数量,但是多次消费请求会自动负载均衡到不同的分区,所有分区的消息最终都将被消费。
Q:为什么消费消息后需要确认?
A:为了保证消息的可靠性。消息发送和消费过程中的可靠性必须由DMS服务、生产者和消费者协同工作才能保证,只有当消费者确认该消息消费成功后,DMS才认为消息消费成功。
在消费者消费消息M期间,消息M仍然停留在队列中,但消息M从被消费开始的30秒内不能被该消费组再次消费,若在这30秒后没有被消费者确认消费完成,则 DMS认为消息M未消费成功,将可以被继续消费。
只有使用API的时候才需要确认消息,使用Console控制台的时候不需要。
Q:为什么创建队列时提示账号受限?
A:当租户余额小于100人民币时,无法创建队列,如需继续使用分布式消息服务,请为帐户充值。