2011-01-28 4 views
5

Windows Azure에서 실행되는 내 응용 프로그램은 사용자 (Azure Queue에 넣음)로부터 들어오는 요청을 처리하여 실제 사람들에게 할당합니다.Azure - 대기 시간 기반 작업

사람들은 요청을 처리하는 데 일정한 시간이 있습니다. 할당 된 사람 중 누구도 요청을 처리하지 않으면 새로운 사람으로 이동해야합니다. 기본적으로 이러한 작업을 특정 시간에 처리 대기열에 넣고 다시 처리하려고합니다. 사용자 중 한 명이 작업을 처리하는 경우 작업자가 다시 처리하지 않도록 대기열에서 제거해야합니다.

+0

이 질문은 흥미 롭습니다. 나는 비슷한 프로젝트에 너무 일하고있다. 여전히 답을 구합니다. – Raptor

답변

3

예약 된 작업을 사용해야합니다. 거기에 사용할 수있는 두 개의 좋은 라이브러리가 있습니다 : Quartz.NetCastle scheduler.

스케줄러를 사용하면 이러한 작업을 쉽게 수행 할 수 있습니다. 처리 시간이 만료 될 때 실행되는 작업 만 만들면됩니다. 거기에 처리되지 않은 요청이 있는지 확인하고 왼쪽에있는 것이 있으면 다음 사람 집합에 알리고 처리 시간이 만료 된 후 또 다른 예정된 시작을 시작하도록 설정합니다.

추가 세부 정보가 필요하면 알려주세요.

프로덕션 응용 프로그램에서 하늘색 웹 롤에서 Quartz.net을 성공적으로 사용했습니다.

+0

이 축척은 어떻게됩니까? 10 개의 웹 역할을 동시에 실행하는 경우에는 어떻게해야합니까? 이 작업의 대규모 복제를 만들지 않을까요? –

+0

마크, 좋은 말입니다. 스케줄러는 실제로 모든 단일 인스턴스에서 실행됩니다. 스케줄 된 작업이 트리거되면 하늘 큐에서 메시지를 푸시하고 작업자 역할에 남겨 둡니다. 같은 메시지가 이미 있는지 볼 수 있습니다. 그러나 여전히 여러 메시지가 푸른 대기열에있을 가능성이 있습니다. 그렇기 때문에 디자인에서 항상 멱등부를 위해 노력해야합니다.>이 경우 시스템이 메시지를 여러 번 처리하지 않아도된다는 의미입니다. – santiagoIT

+0

때때로 멱등 원을 사용할 수 없습니다. 제 경우에는 이것보다 더 탄력있는 것이 필요합니다. –