이상한 문제가 발생했습니다. 다른 클라우드 서비스 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에서
감사합니다. 설명서에서이 내용을 읽었습니다. 그러나 나는 그것이 당신이 말하는 것과 그저 일어난 일이 시작된 사실만큼 명확하지 않았던 것 같아요. 조만간 조만간이 문제에 빠지게 될 것 같아요. 나는이 응용 프로그램에서 최대한 acurate되도록 타이밍이 필요하므로 ScheduledEnqueueTimeUtc가 나타납니다. 감사! –
'그 속성으로 인해 메시지가 즉시 전달되지 않습니다. '그 의미는 무엇입니까? 메시지가 Azure로 보내지지만 그 시간에 도달 할 때까지 대기열에 추가되지 않습니까, 아니면 그 시간에 보낼 클라이언트 애플리케이션에서 대기할까요? –