很久以前,亚马逊推出了长轮询功能。并且,可以在队列上配置“接收消息等待时间”参数。根据文档,有效值落在0-20秒的范围内。Amazon SQS“长轮询”配置。服务器与客户端
在客户端,我们也可以配置在每个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
};
问题:
一个)什么是之间的关系接收在队列VS配置的WaitTimeSeconds属性在消息组接收请求消息等待时间?他们会独立工作吗?或者,客户端中设置的值将覆盖队列中设置的值(针对该单个请求)。
b)在某些情况下,C#客户端可以超时吗?我正在考虑将这两个值设置为最大值(20秒),但恐怕可能会导致C#长轮询操作超时。
c)什么是最佳做法。 WaitTimeSeconds>接收消息等待时间?