很久以前,亚马逊引入了长轮询功能。通过这个功能,可以在队列上配置“接收消息等待时间”参数。根据文档,有效值的范围为0-20秒。
在客户端中,我们还可以在每个MessageReceiveRequest上配置此参数。我正在使用AWS .NET SDK。
在客户端中,我们还可以在每个MessageReceiveRequest上配置此参数。我正在使用AWS .NET SDK。
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)队列中配置的“接收消息等待时间”和消息接收请求中设置的“WaitTimeSeconds”属性之间有什么关系?它们会独立工作吗?还是客户端设置的值会覆盖队列中设置的值(对于单个请求)。
b)在某些条件下,C#客户端会超时吗?我考虑将两个值都设置为最大值(20秒),但我担心这可能会导致C#长轮询操作超时。
c)最佳实践是什么?WaitTimeSeconds > Receive Message Wait Time吗?