2010-04-20 2 views
13

전자 상거래 사이트 (주문 확인, 알림 등)에 대한 이메일을 보내기위한 서비스를 설계 중입니다. "SendEmail"방법을 사용합니다. 전송할 전자 메일을 나타내는 XML 청크를 생성하고 Amazon SQS 대기열에 저장합니다. 내 웹 응용 프로그램 및 다른 응용 프로그램에서 전자 메일을 "보내"사용합니다.Amazon SQS를 사용하는 모범 사례 - 대기열 폴링

그런 다음 큐를 확인하고 실제로 전자 메일 메시지를 보내는 방법이 필요합니다. (이메일 발송 방법은 알고 있습니다)

대기열을 "폴링하는"가장 좋은 방법은 무엇일까요?

Windows 서비스를 만들고 Quartz.net과 같은 것을 사용하여 매 x 분마다 큐를 확인하도록 예약해야합니까? 더 좋은 방법이 있나요?

+0

당신은 이미 이것을 알고 있을지 모르나, 제가 지적하고 싶었던 것은 SQS가 같은 항목을 한 번 이상 전달할 수 있다는 것입니다. 이 FAQ 항목을보십시오 : http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message – BigJoe714

답변

3

내가이 시나리오에서 SQS를 정말로 만들고 싶다면 10 분마다 대기열에서 메시지를 검색 한 다음 발송하는 Windows 서비스를 만듭니다.

잠재적으로 다른 서비스를 사용할 수 있다면 Postmark과 같은 것을 사용하는 것이 좋습니다 (오늘 Jeff Atwood’s blog post에 대한 의견 덕분에 방금 알게되었습니다). 당신은 그들의 api에 당신의 전자 우편 메시지 정보를 복종시키고, 나머지를 할 것입니다. 심지어는 반송 된 이메일을 확인하기위한 API도 있습니다. 나는이 서비스를 한 번도 사용하지 않았지만, 나는 그것이 훌륭하게 들리고 미래에 그것을 사용할 것을 진지하게 고려할 것이라고 생각한다.

25

더 많은 것 같이 Amazon SNS는 당신의 허클베리입니다. (그게 무슨 뜻인지는 모르겠지만 한 번 영화에서 보았습니다.)

SQS는 "만료되기 전에 누군가가이 메시지를 찾고 있기를 바랍니다." SNS는 "나는 당장 필요로하는 사람에게이 사실을 알릴 필요가있다"고 생각합니다.

전자 메일을 기본 제공 전송으로 포함합니다. (올바른 단어인지 확실하지 않음)

Amazon SNS는 응용 프로그램 (또는 사람)에게 알리려는 주제를 작성하고 클라이언트를 등록하고 메시지를 게시하는 데 사용할 수있는 간단한 웹 서비스 인터페이스를 제공합니다 , 클라이언트의 선택 프로토콜 (예 : HTTP, 전자 메일 등)을 통해 이러한 메시지를 전달할 수 있습니다. Amazon SNS는 새로운 정보 및 업데이트를 주기적으로 확인하거나 "폴링"할 필요가없는 "푸시"메커니즘을 사용하여 클라이언트에게 알림을 전달합니다. 당신은 무료로 아마존 SNS 시작할 수 있습니다

:

그들은 이메일에 대한 제한과 서비스의 나머지와 같은 프리미엄 (Freemium) 모델을 가지고해야합니다. 매월 Amazon SNS 고객은 처음 100,000 건의 Amazon SNS 요청에 대해서는 요금을 부과하지 않으며 HTTP를 통한 첫 번째 100,000 통보에는 요금을 부과하지 않으며 이메일을 통한 첫 번째 1,000 통보에는 요금을 부과하지 않습니다.

+3

LOL 허클베리, 나는 그 말은 그게 당신의 친구라는 것을 의미한다고 생각합니다. Huckleberry는 Tom Sawyer의 친구 였기 때문에. –

+6

http://en.wikipedia.org/wiki/Huckleberry#Use_in_slang –

+0

"나는 너의 허벅지 야.": 묘비에있는 문서 휴가로 발 킬머 –

1

SES와 같은 모양입니다. http://aws.amazon.com/ses/ 다른 유사한 서비스 나 다른 시스템을 구축하는 것과 비교하면 매우 저렴합니다.

-1

Windows 서비스가 가장 좋은 방법이지만 취하지 않아야합니다. ASP.NET 환경에서 백그라운드 작업을 실행하려면 HostingEnvironment.QueueBackgroundWorkItem입니다. 구현을 시작하기에 좋은 시작 지점은 폴링 (긴 폴링을 통한)은 sqs-consumer입니다.