开发者社区 问答 正文

消息服务的Queue什么用处?


队列是消息存储的目的地,队列可以分成普通队列和延时队列两类。如果发送消息时不指定消息延时参数,被发送到普通队列的消息立刻可以被消费,而发送到延时队列需要经过设定的延时时间后才能被消费。

队列属性


DelaySeconds
  • 消息延迟时间,单位为秒;
  • 取值范围:0 ~ 604800秒(7天);
  • 当该属性大于0时,发送到队列的所有消息是延迟消息,经过该属性指定的秒数后变为可消费消息;
  • 如果发送消息请求指定了DelaySeconds,以请求指定的DelaySeconds为准;

MaximumMessageSize
  • 消息体最大长度,单位为Byte;
  • 取值范围:1024 ~ 65536Byte(64KB);
  • 该属性用于限制发送到队列的消息体最大长度,超过该长度发送消息失败;

MessageRetentionPeriod
  • 消息最长保留时间,单位为秒;
  • 取值范围:60 ~ 1296000秒(15天);
  • 发送到队列的消息最长保留该时长,超过指定时间,无论消息是否被消费都将被删除;

VisibilityTimeout
  • 消息被receive后的隐藏时长,单位为秒;
  • 取值范围:1 ~ 43200秒(12小时);
  • 消息被receive后,在该属性指定的这段时间内消息处于隐藏状态,在这段时间内,可以删除消息或者修改消息隐藏时长;超过这段时间,消息可以再次被receive;

PollingWaitSeconds
  • (batch)receive message请求最长等待时间,单位为秒;
  • 取值范围:0 ~ 30秒;
  • 当队列中没有消息时,(batch)receive message请求将挂在 MNS 服务器端;在该属性指定的时间范围内,如果有消息发送到队列中,立即返回消息给用户;如果超过该时间,仍然没有消息,返回MessageNotExist;
  • 如果(batch)receive message请求指定了wait seconds,以请求指定的时间为准;

LoggingEnabled
  • 是否开启日志管理功能;
  • 取值范围:True/False;
  • 当该属性为True时,MNS 将收集队列的消息操作日志推送到指定的地方,日志管理请参考详情

CreateTime
  • 队列创建时间,从1970-1-1 00:00:00 到现在的秒值;

LastModifyTime
  • 修改队列属性信息最近时间,从1970-1-1 00:00:00 到现在的秒值;

ActiveMessages
  • 队列中处于 Active 状态的消息总数,为近似值;

InactiveMessages
  • 队列中处于 Inactive 状态的消息总数,为近似值;

DelayMessages
  • 队列中处于 Delayed 状态的消息总数,为近似值;


QueueURL

  • 格式:http://$AccountId.mns.<Region>.aliyuncs.com/queues/$QueueName
  • mns.<Region>.aliyuncs.com: MNS 访问域名, Region 是 MNS 部署的区域,用户可以根据应用需要选择不同的地域;
  • AccountId: 队列所有者的帐号 ID;
  • QueueName: 队列名称,同一个AccountId在同 Region 中的队列名不能重名。

展开
收起
轩墨 2017-10-24 15:57:53 2137 分享 版权
阿里云 AI 助理回答

您提到的队列属性和概念主要与消息队列服务相关,这些描述与阿里云的消息服务——阿里云消息队列MQ(Message Queue for Apache RocketMQ)或更早期的阿里云消息服务MNS(Message Neural Service)相吻合。下面我将基于这些信息帮助您理解如何在阿里云中使用这些队列属性。

延时队列与普通队列

  • 延时队列:允许您设定消息的延迟时间,在指定的时间后消息才变为可消费状态。这对于需要定时处理的任务非常有用,比如订单确认、邮件发送延时等场景。
  • 普通队列:没有消息延迟特性,消息发送后立即可以被消费者接收和处理。

队列属性详解

  1. DelaySeconds:控制消息的延时时间,适用于延时队列。通过设置这个参数,您可以实现消息的定时投递。

  2. MaximumMessageSize:限制单个消息的大小,确保消息系统不会因为过大的消息而影响性能或导致传输失败。

  3. MessageRetentionPeriod:消息的最长存活时间,超过这个时间未被消费的消息将会被自动删除。这有助于管理队列中的消息数量,避免无限制积累。

  4. VisibilityTimeout:消息被接收后隐藏的时间,这段时间内其他消费者无法看到此消息,用于防止消息被重复处理。

  5. PollingWaitSeconds:消费者拉取消息时的最大等待时间,如果在这个时间内队列中没有新消息,则返回空响应,提高了消费者端的效率。

  6. LoggingEnabled:日志记录功能开关,开启后可以帮助追踪队列操作,便于问题排查和审计。

  7. CreateTime/LastModifyTime:分别记录队列创建时间和最近一次属性修改时间,对于监控和管理队列变更历史有帮助。

  8. ActiveMessages/InactiveMessages/DelayMessages:提供队列中不同状态消息的数量概览,帮助了解队列当前的工作负载和状态。

QueueURL

QueueURL 是访问特定队列的唯一标识符,包含了账号ID、区域信息以及队列名称,是进行队列操作(如发送、接收消息)时必须提供的地址。

如何应用在阿里云上

在阿里云上使用消息队列服务时,您可以通过阿里云控制台或者SDK来创建队列,并设置上述属性。例如,如果您需要一个延时队列,可以在创建队列时通过API调用指定DelaySeconds;若要调整消息保留时间,可以修改MessageRetentionPeriod属性。

总之,阿里云的消息队列服务提供了丰富的配置选项,以满足不同应用场景的需求,从即时消息传递到定时任务处理,都能找到合适的配置方式。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答