현재 버전에서 메시지를 연기 할 수 있다고 생각하지 않습니다.
가능한 해결 방법
당신은 지연과 같은 메시지를 다시 추가 할 수 있으며, 이것은
똑바로 예외 후 독 큐에 메시지를 실패 보낼 것이다
MaxDequeueCount
1
로 설정할 수 있습니다 중복을 피하기 위해
:
JobHostConfiguration configuration = new JobHostConfiguration();
configuration.Queues.MaxDequeueCount = 1;
및 메시지 프로세서 - 다시 추가 지연과 던져 예외 메시지를 :
public static void ProcessMessage([QueueTrigger("resource-heavy-queue")] string message, [Queue("resource-heavy-queue")] CloudQueue originalQueue)
{
if (/*Resource unavaliable*/)
{
var messageToReAdd = new CloudQueueMessage(message);
originalQueue.AddMessage(messageToReAdd, null, TimeSpan.FromSeconds(10));
throw new ResourcesNotAvailableException();
}
}
이렇게하면 리소스에 대해 일종의 백 오프 전략을 구현할 수 있습니다. 불행하게도 수동으로 몇 가지 문제를 해결해야한다 :
- 포이즌 메시지를 처리 - 당신이
NumberOfRetries
및 증가를 수행하기 위해 메시지의 모델을 확장 할 필요가 있도록, 다시 추가하면 무한 루프에 끝낼 수있는 동일한 메시지를 유지하는 경우 반복 할 때마다
- 메시지
Id
및 InsertionTime
은 모두 을 다시 추가 할 때마다 달라져서 다시 사용할 수 없기 때문에을 다시 사용할 수 없습니다.
<< ... 대기열 트리거가 즉시 다시 시작됩니다 (임대 시간을 기다리지 않는 것 같습니다).>> 여기에 나와있는 내용 때문에 https://blogs.msdn.microsoft.com/mustafakasap/2015/12/26/azure-webjobs-jobhostconfiguration/ (이 정보가 정확하다고 가정)이 표시 될 수 있습니다. "다른 동시 처리 단계에 있지 않은 대기열에서 대기중인 메시지는 시험 간 시간 간격이 없습니다! 따라서 충분한 자원이 있으면 재 시도가 즉시 발생합니다. " – Matt