2014-02-25 4 views
4

내 앱에서 Amazon SQS를 사용하여 메시지를 사용하고 있습니다. 내 애플 리케이션은 이미지를 처리하는 데 사용됩니다. 새로운 메시지를 지속적으로 모니터링하는 효율적인 방법을 찾고 있습니다. 내 첫 번째 접근 방식은 이미지 처리가 끝나면 메시지를 읽는 것입니다.새 SQS 메시지를 효율적으로 모니터링

문제는 하나의 메시지가 최대 20 초 동안 기다린 후에 혼자서 도착하면 아무 것도 읽음 메시지 기능을 트리거하지 않는다는 것입니다.

간격을두고 실행되는 함수를 만드는 방법에 대해 생각해 보았습니다. 그러나 어떤 방법을 택할 것인지, 그리고 더 효율적인 방법 (빠른 결과, 빈 결과가 덜 필요함)이 있는지를 확신 할 수 없습니다. 내가 .NET/C#을위한 AWS SDK를 사용하고

+2

일반적인 접근 방식은 첫 번째 시간이 끝나 자마자 다른 긴 설문 조사를 시작하는 것입니다. 그런 다음 메시지는 대기열에 추가되는 즉시 수신됩니다. –

+0

안녕하세요, 긴 pulling timeout 이벤트를 사용할 수 있습니까? –

+1

'ReceiveMessage'가 반환되거나, 작업 시간이 초과되면'ReceiveMessageAsync'에 의해 반환 된'Task'가 완료됩니다. –

답변

2

AWS 롱 폴링 문서는 여기에서 찾을 수 있습니다 : 또한

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html

, 당신이 예약 된 Windows 작업 스케줄러를 사용할 수 있습니다 실행 (최대 1 분마다) 또는 큐 항목을 그보다 빨리 처리해야하는 경우 Windows 서비스는 지속적으로 실행되고 원하는 빈도로 대기열을 폴링 한 다음 작업을 수행하거나 대기 상태가 될 때까지 '대기'할 수 있습니다 다시 확인하고 싶습니다.

+0

System.Threading.Timer는 어떻습니까? 비교해 봤어? –

+1

그게 너무 작동합니다; Windows 서비스를 사용하고 있다면, 수표 사이에 타이머를 사용합니다. 작업 스케줄러가 실행하는 작업을 사용하고 있고 수표 사이에 최대 1 분간 기다릴 수 있다면 타이머를 사용하지 않을 것입니다. –

+0

새 메시지를 계속 찾으려면 작업자 환경이 필요합니다. 다음은 문서 링크입니다. http://docs.aws.amazon.com/elasticbeanstalk/lastest/dg/using-features-managing-env-tiers.html#worker-daemon AWS는 IIS 응용 프로그램의 작업 환경을 지원하지 않습니다. –

관련 문제