2013-03-01 2 views
6

이상한 문제가 발생했습니다. 다른 클라우드 서비스 B가 읽을 수 있도록 메시지를 서비스 버스 대기열에 넣는 클라우드 서비스 A가 있습니다. 클라우드 서비스 B는 필요한 작업을 처리하는 데 약 1 초가 걸릴 수 있습니다. 그런 다음 클라우드 서비스 A의 대기열에 다시 메시지를 넣습니다. 클라우드 서비스 B가이를 수행하면 ScheduledEnqueueTimeUtc를 사용하여 약 1-10 초의 지연 시간을 설정합니다 메시지에.Azure 서비스 버스 대기열 ScheduledEnqueueTimeUtc 지연 됨

지난 금요일 푸른 하늘의 정전으로이 응용 프로그램이 완전히 중단되었습니다. 온라인으로 다시 가져 왔을 때 ScheduledEnqueueTimeUtc는 항상 최소 10 초의 지연을 초래합니다. 예를 들어, 미래에 1에서 10 초 사이의 datetime을 생성합니다. 내가 ScheduledEnqueueTimeUtc로 설정하고 나는 또한 보내고있는 메시지의 속성으로 그 시간을 넣는다. 클라우드 서비스 A에서 다시 수신 할 때 메시지의 EnqueuedTimeUtc 속성에 대한 datetime 속성을 비교한다.이 2 번 꽤해야한다. 그리고 그게 지난 금요일까지 몇 달 동안 일해 온 방식입니다.

이제 클라우드 서비스 B는이 메시지를 1 초 안에 대기열에 넣었다 고 말합니다. 클라우드 서비스 A는 12-14 초 동안 대기열에 들어 가지 않았다고 말합니다. 대기열에 메시지를 넣을 때 비동기 메서드를 사용하고 있습니다. ScheduledEnqueueTimeUtc를 사용하지 않으면 지연이 없습니다. 클라우드 서비스 A에서 다시 볼 때 시간이 충분히 가까워집니다.하지만 앞으로 12 초 동안 ScheduledEnqueueTimeUtc를 1 초로 설정해도 대기열에 나타나지 않는 것 같습니다. -14 초.

이제 quartz.net을 사용하여 ScheduledEnqueueTimeUtc 속성을 설정하는 대신 메시지를 예약함으로써이 문제를 해결할 수 있습니다. 그러나 이것이 실제로 시작된 것이 정말 이상한 것처럼 보입니다. ScheduledEnqueueTimeUtc Property's documentation에서

답변

6

:

".. 메시지 메시지가 동시에 전송됩니다 것을 의미하지 않는다 시간을 enquing 그것은 큐에 얻을 것이다,하지만 실제 전송 시간이 큐의 작업 부하와 상태에 따라 달라집니다"

이 속성을 사용하면 메시지가 즉시 전달되지 않습니다. 그 시간은 이며, 설정 시간은입니다. 그러나 정확히이 배달 될 것이라는 보장은 없습니다.

고해상도 스케줄링이 필요한 경우 Quartz가 옵션 일 수 있습니다. 모바일 서비스 미리보기의 일부인 새로운 job scheduler을 평가할 수도 있습니다.

+1

감사합니다. 설명서에서이 내용을 읽었습니다. 그러나 나는 그것이 당신이 말하는 것과 그저 일어난 일이 시작된 사실만큼 명확하지 않았던 것 같아요. 조만간 조만간이 문제에 빠지게 될 것 같아요. 나는이 응용 프로그램에서 최대한 acurate되도록 타이밍이 필요하므로 ScheduledEnqueueTimeUtc가 나타납니다. 감사! –

+0

'그 속성으로 인해 메시지가 즉시 전달되지 않습니다. '그 의미는 무엇입니까? 메시지가 Azure로 보내지지만 그 시간에 도달 할 때까지 대기열에 추가되지 않습니까, 아니면 그 시간에 보낼 클라이언트 애플리케이션에서 대기할까요? –

3

ShcheduledEnqueueTimeUtc 기능에 일부 회귀 현상이 발생하여 최근에 회귀 현상이 발생했습니다. 다음 며칠 내에 해결 될 예정이며 예상되거나 원래의 동작을보아야합니다.

예약 된 메시지는 대기열의 사용량에 따라 약간의 지연이있을 수 있지만 위에서 언급 한 시나리오에서는 사용할 수 있습니다. 응용 프로그램에 영향을 미치는 기능의 회귀는 Azure의 지원 티켓으로 제기 될 수 있습니다. http://www.windowsazure.com/en-us/support/contact/

관련 문제