【发布时间】:2015-01-08 07:37:43
【问题描述】:
很久以前,亚马逊推出了长轮询功能。这样,就可以在队列上配置“接收消息等待时间”参数。根据文档,有效值的范围是 0 - 20 秒。
在客户端,我们也可以在每个MessageReceiveRequest上配置这个参数。我正在使用适用于 .NET 的 AWS 开发工具包。
var receiveRequest = new ReceiveMessageRequest
{
QueueUrl = "https://queue-url-goes-here.com",
MaxNumberOfMessages = 10,
VisibilityTimeout = 30,
WaitTimeSeconds = 20 // This should tell if we want long polling or not
};
问题:
a) Queue 中配置的Receive Message Wait Time VS Message Receive Request 中设置的WaitTimeSeconds 属性是什么关系?他们会独立工作吗?或者客户端中设置的值会覆盖队列中设置的值(针对单个请求)。
b) 在某些情况下,C# 客户端会超时吗?我正在考虑将这两个值都设置为最大值(20 秒),但我担心这可能会导致 C# 长轮询操作超时。
c) 最佳实践是什么。 WaitTimeSeconds > 接收消息等待时间?
【问题讨论】:
标签: c# amazon-sqs aws-sdk