2014-11-05 2 views
2

오래 전, 아마존은 긴 폴링 기능을 도입했습니다. 그리고 그것으로, "Receive Message Wait Time"매개 변수를 Queue에 구성 할 수 있습니다. 문서에 따르면 유효한 값은 0 - 20 초 사이입니다. 클라이언트의 Amazon SQS "긴 폴링"구성. 서버 대 클라이언트

enter image description here

, 우리는 또한 각 MessageReceiveRequest에이 매개 변수를 구성 할 수 있습니다. .NET 용 AWS 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 
}; 

질문 :

가) 사이의 관계가 큐 VS의 메시지에 설정된 WaitTimeSeconds 속성 요청을 수신 구성 메시지 대기 시간 수신 무엇입니까? 그들은 독립적으로 일할 것인가? 또는 클라이언트에 설정된 값이 대기열에 설정된 값을 무시합니다 (단일 요청의 경우).

b) 특정 조건에서 C# 클라이언트가 시간 초과 될 수 있습니까? 두 값을 최대 (20 초)로 설정하는 것에 대해 생각하고 있지만 C# long 폴링 작업이 시간 초과 될 수 있습니다.

c) 모범 사례는 무엇입니까? WaitTimeSeconds>메시지 수신 대기 시간?

답변

3

a) pastk의 대답에서 알 수 있듯이 메시지의 WaitTimeSeconds는 대기열에 구성된 수신 메시지 대기 시간보다 우선합니다. 자세한 내용은 long polling 설명서를 참조하십시오.

b) .NET 용 AWS SDK는 System.Net.HttpWebRequest (후드 - its default timeout is 100 seconds)를 사용합니다. 기본값을 사용하는 경우 WaitTimeSeconds를 20 초로 설정해도 작업 시간이 초과되지 않습니다.

c)이 시점에서 아마존이 규정 한 모범 사례는 없습니다. 시나리오에 가장 적합한 것으로 생각하는 것을하십시오.

1

필요한 대기 시간을 설정하는 방법이 다릅니다. 요청 수준 대기 시간이 항상 대기열 값보다 우선합니다. "ReceiveMessage의 WaitTimeSeconds 매개 변수에 대해 1에서 20 사이의 값으로 설정된 값은 대기열 특성 ReceiveMessageWaitTimeSeconds에 설정된 값보다 우선합니다." (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html)

큐의 소비자 중 일부는 긴 폴링을 사용해야하고 그렇지 않은 사람들은 그렇지 않은 경우에는 요청 당 대기 시간 설정을 사용하는 것이 좋으며, 그렇지 않으면 큐 설정을 사용하는 것이 더 간단합니다.