2017-03-21 4 views
0

Azure Service Bus 대기열에서 데드 레터를 어떻게 삭제합니까?Azure Service Bus 큐에서 데드 레터를 어떻게 삭제합니까?

내가 큐의 메시지를 처리 ​​할 수 ​​있습니다 ...

var queueClient = QueueClient.CreateFromConnectionString(sbConnectionString, queueName); 
while (queueClient.Peek() != null) 
{ 
    var brokeredMessage = queueClient.Receive(); 
    brokeredMessage.Complete(); 
} 

하지만

+0

[azureservicebus에서 데드 레터에서 메시지를 보거나 삭제하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/35191298/how-to-peek-and-delete-a-message-from-deadletter- in-azureservicebus) – Thomas

+0

이 게시물보기 : http://stackoverflow.com/questions/35191298/how-to-peek-and-delete-a-message-from-deadletter-in-azureservicebus – Thomas

답변

1

트릭이 대기열에 대한 deadletter path를 얻는 것입니다 죽은 문자 메시지를 처리 ​​어쨌든 볼 수있는 당신을 QueueClient.FormatDeadLetterPath(queueName)을 사용하여 얻을 수 있습니다.

다음을 시도하십시오 :

var queueClient = QueueClient.CreateFromConnectionString(sbConnectionString, QueueClient.FormatDeadLetterPath(queueName)); 
while (queueClient.Peek() != null) 
{ 
    var brokeredMessage = queueClient.Receive(); 
    brokeredMessage.Complete(); 
} 
1

우리의 GitHub의 샘플의 repo (https://github.com/Azure-Samples/azure-servicebus-messaging-samples)에서 사용할 수있는 몇 가지 좋은 샘플이 있습니다. 도움이

var dead-letterReceiver = await receiverFactory.CreateMessageReceiverAsync(
      QueueClient.FormatDeadLetterPath(queueName), ReceiveMode.PeekLock); 
    while (true) 
    { 
     var msg = await dead-letterReceiver.ReceiveAsync(TimeSpan.Zero); 
     if (msg != null) 
     { 
      foreach (var prop in msg.Properties) 
      { 
       Console.WriteLine("{0}={1}", prop.Key, prop.Value); 
      } 
      await msg.CompleteAsync(); 
     } 
     else 
     { 
      break; 
     } 
    } 
} 

희망 다음 DeadletterQueue 프로젝트는 당신에게 당신의 코드에서이 작업을 수행하는 방법의 예를 표시해야합니다!

관련 문제