2014-09-24 9 views
2

큐에 쓰는 웹 역할을 구현했습니다. 이것은 잘 작동합니다. 그런 다음 큐에서 읽을 Worker 역할을 개발했습니다. 로컬 컴퓨터에서 디버그 모드로 실행할 때 메시지를 대기열에서 잘 읽습니다. 그러나 작업자 역할을 배포 할 때 메시지가 결국 데드 레터 큐에 저장되므로 dos'nt가 큐를 읽는 것처럼 보입니다. 누구든지이 문제의 원인이 될 수 있습니다. 다음은Azsure Worker 큐에서 읽기 역할

queueClient = QueueClient.Create(queueName, ReceiveMode.PeekLock); 
var queueDescription = new QueueDescription(QueueName) 
    { 
     RequiresSession = false, 
     DefaultMessageTimeToLive = TimeSpan.FromMinutes(2), 
     EnableDeadLetteringOnMessageExpiration = true, 
     MaxDeliveryCount = 20 
    }; 

답변

1

에서이 일을 계산에 열쇠가 될 ~ 10 분에 QueueDescription.DefaultmessageTimeToLive을 증가 수있는 몇 가지 비트입니다.

이 속성은 메시지가 처리되기 전에 대기열에 남아 있어야하는 시간을 지정합니다 (Message.Complete()가 호출 됨). 큐에 2 분 이상 머무르면 자동으로 DeadLetterQueue로 이동합니다 (EnableDeadLetteringOnMsgExp를 true로 설정했기 때문에).

TTL은 메시지가 시도 된 경우는

  • 더 이상을 처리하는 데 도움이되지 않을 수도 있습니다 - 그럼 도착 후 메시지가 N 분 후에 처리되지 않는 경우 이러한 메시징 시나리오

    • 에 유용하다 (Reciever - msg.Complete()) - 특별한 처리가 필요할 수도 있습니다.

    따라서 DefaultMsgTTL의 값이 조금 더 높습니다.

    희망 하시겠습니까! Sree