是否可以估计 SQS 消息在队列中的排队位置?
Is it possible to estimate where in line an SQS message is in a queue?
我的直觉是答案是 "no",我会接受这个答案。我可以得到你的确认吗?
我有一个电子项目,一次感谢一个捐助者,从 SQS 队列中读取成功的捐赠。目前我有一个 "thanking device",但如果需求增长,它可以扩展,使 Amazon SQS 成为管理队列分配的理想选择。
由于设备一次只能感谢一个人,因此 SQS 队列有时可能会很快填满。给捐赠者一个状态更新会很好,例如,他们的捐赠在队列中排在第 5 位,需要感谢。这个 "number in line" 状态更新选项可以用 SQS 实现吗?
将项目添加到队列时,它 returns 分配的序列号作为响应的一部分:
{
ResponseMetadata: { RequestId: 'aaaaaaaa-9ee6-58e4-a511-7f731ebe8145' },
MD5OfMessageBody: 'aaaaaaaa80be1add497c0685c1e426a5',
MessageId: 'aaaaaaaa-f4e2-4ff5-a3ec-9d017585f60b',
SequenceNumber: '18835430100687855616'
}
这个号码在单个队列中不是连续的,可能排除了使用这个号码作为排队辅助的可能性。例如,在几秒钟内将两个项目添加到队列后返回的两个序列号:
18835430099287791616
18835430100687855616
我可以使用 get-queue-attributes 来估计捐赠成功时队列中的捐赠总数 (ApproximateNumberOfMessages)。这将有助于获得初步估计。
集思广益超越接受table "no"答案:
也许我可以在某个地方存储一个计数器,以更新每个捐助者需要首先感谢的其他捐助者的大概数量 session?目前,我看到处理后的计数存储在 single-record dynamo-db table 中(可能不是最佳用例)或作为 JSON 文档存储在 S3 中(尽管这可能会得到规模混乱,也许不是)。当捐赠成功时,捐赠者会收到已处理感谢的初始计数和估计的队列长度,其中可以定期进行增量计算。
我愿意接受想法。
我不知道有任何受支持的机制可以确定特定消息在任何给定时间在 SQS 队列中的位置。
但是,正如您所说,您可以使用 CloudWatch 中的 GetQueueAttributes. You could store this information in DynamoDB and perhaps also maintain an indicator of your approximate processing rate of SQS messages (or leverage SQS queue metrics 检索在将消息添加到队列时队列中可见消息的近似数量。这可能会被用来估计处理消息需要多长时间。
我的直觉是答案是 "no",我会接受这个答案。我可以得到你的确认吗?
我有一个电子项目,一次感谢一个捐助者,从 SQS 队列中读取成功的捐赠。目前我有一个 "thanking device",但如果需求增长,它可以扩展,使 Amazon SQS 成为管理队列分配的理想选择。
由于设备一次只能感谢一个人,因此 SQS 队列有时可能会很快填满。给捐赠者一个状态更新会很好,例如,他们的捐赠在队列中排在第 5 位,需要感谢。这个 "number in line" 状态更新选项可以用 SQS 实现吗?
将项目添加到队列时,它 returns 分配的序列号作为响应的一部分:
{
ResponseMetadata: { RequestId: 'aaaaaaaa-9ee6-58e4-a511-7f731ebe8145' },
MD5OfMessageBody: 'aaaaaaaa80be1add497c0685c1e426a5',
MessageId: 'aaaaaaaa-f4e2-4ff5-a3ec-9d017585f60b',
SequenceNumber: '18835430100687855616'
}
这个号码在单个队列中不是连续的,可能排除了使用这个号码作为排队辅助的可能性。例如,在几秒钟内将两个项目添加到队列后返回的两个序列号:
18835430099287791616
18835430100687855616
我可以使用 get-queue-attributes 来估计捐赠成功时队列中的捐赠总数 (ApproximateNumberOfMessages)。这将有助于获得初步估计。
集思广益超越接受table "no"答案:
也许我可以在某个地方存储一个计数器,以更新每个捐助者需要首先感谢的其他捐助者的大概数量 session?目前,我看到处理后的计数存储在 single-record dynamo-db table 中(可能不是最佳用例)或作为 JSON 文档存储在 S3 中(尽管这可能会得到规模混乱,也许不是)。当捐赠成功时,捐赠者会收到已处理感谢的初始计数和估计的队列长度,其中可以定期进行增量计算。
我愿意接受想法。
我不知道有任何受支持的机制可以确定特定消息在任何给定时间在 SQS 队列中的位置。
但是,正如您所说,您可以使用 CloudWatch 中的 GetQueueAttributes. You could store this information in DynamoDB and perhaps also maintain an indicator of your approximate processing rate of SQS messages (or leverage SQS queue metrics 检索在将消息添加到队列时队列中可见消息的近似数量。这可能会被用来估计处理消息需要多长时间。