Adr*_*zar 7 c# amazon-sqs aws-sdk
很久以前,亚马逊推出了长轮询功能。有了这个,就可以在队列上配置“接收消息等待时间”参数。根据文档,有效值在 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
};
Run Code Online (Sandbox Code Playgroud)
问题:
a) Queue中配置的Receive Message Wait Time与Message Receive Request中设置的WaitTimeSeconds属性有什么关系?他们会独立工作吗?或者客户端中设置的值覆盖队列中设置的值(对于该单个请求)。
b) 在某些情况下,C# 客户端是否会超时?我正在考虑将两个值都设置为最大值(20 秒),但我担心这可能会导致 C# 长轮询操作超时。
c) 最佳实践是什么。WaitTimeSeconds >接收消息等待时间?
a)如 patk 的回答所述,消息上的 WaitTimeSeconds 将覆盖队列中配置的接收消息等待时间。有关详细信息,请参阅长轮询文档。
b) 适用于 .NET 的 AWS 开发工具包在底层使用 System.Net.HttpWebRequest -其默认超时为 100 秒。如果您使用默认值,将 WaitTimeSeconds 设置为 20 秒不会导致操作超时。
c) 亚马逊在这一点上没有规定最佳实践。做任何你认为最适合你的场景的事情。
归档时间: |
|
查看次数: |
4132 次 |
最近记录: |