1

Я хочу быть уверенным, что если такое же сообщение уже присутствует в очереди, тогда второе сообщение должно быть проигнорировано. (Не вставлено в очередь), в то время как webjob обрабатывает первое сообщение.Как предотвратить дублирование сообщения Duplicate в очереди служебной шины при обработке WebJob?

Я попытался следующий код:

var namespaceManager = 
       NamespaceManager.CreateFromConnectionString(connectionString); 

      if (!namespaceManager.QueueExists(queueName)) 
      { 
       namespaceManager.CreateQueue(new QueueDescription(queueName) { RequiresDuplicateDetection = true }); 
      } 

свойства RequiresDuplicateDetection должен обеспечить около дубликата сообщения.

// Get messageFactory for runtime operation 
      MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString(connectionString); 

      QueueClient queueClient = messagingFactory.CreateQueueClient("TestQueue"); 

      BrokeredMessage message = new BrokeredMessage(); 
      message.MessageId = "Localization"; 
      queueClient.Send(message); 

Но webjob получает trigger for every messageId. Я дал sleep time 150000 MILI SEC, но перед этим я попытался установить insert same message to same queue, который не следует вставлять из-за дублирования сообщения.

пытался MSDN LINK но MSDN он не работает в Azure Webjob Любой может помочь мне в этом? WebJob Code :

public static void ProcessQueueMessage([ServiceBusTrigger("TestQueue")] BrokeredMessage message, TextWriter log) 
     { 
log.WriteLine("Webjob Start" + message.MessageId + DateTime.Now); 
      Thread.Sleep(150000); 
      log.WriteLine("Webjob End" + message.MessageId + DateTime.Now); 
     } 

ответ

2

обнаружения повторяющихся сообщений на основе MessageId из BrokeredMessage. В группе продуктов Azure есть образец, иллюстрирующий эту функцию here.

+0

Не работает в WebJob :( – Neo

+0

Эта ссылка больше не работает – ScottE

+0

@ScottE Ссылка обновлена –