MessagingEntityNotFoundException при просмотре DLQ на служебной шине Azure - PullRequest
0 голосов
/ 22 февраля 2019

Последние два дня я начал получать сообщение MessagingEntityNotFoundException, когда мой код вызывает Microsoft.Azure.ServiceBus.Core.MessageReceiver.PeekAsync в приемнике сообщений очереди недоставленных сообщений.Код не был изменен до того, как возникло исключение, и работал без проблем в течение последних двух месяцев.

Полное сообщение об исключении:

Microsoft.Azure.ServiceBus.MessagingEntityNotFoundException: A request handler with id '56216' was not found in the entity management node $management. 

Код выполняется вФункция Azure, запускаемая по времени.

Код для настройки получателей сообщений:

    using Microsoft.Azure.ServiceBus;
    using Microsoft.Azure.ServiceBus.Core;
    using Microsoft.Azure.ServiceBus.Management;

    public class DeadLetterQueueMonitor {
       private static List<MessageReceiver> _messageReceivers;

       private async Task<List<MessageReceiver>> GetMessageReceivers(ILogger logger)
       {
         if (_messageReceivers == null)
         {
            _messageReceivers = new List<MessageReceiver>();
            var managementClient = new ManagementClient(ConnectionStrings.ServiceBusConnectionString);
            var topics = await managementClient.GetTopicsAsync();

            foreach (var topic in topics)
            {
                var subscriptions = await managementClient.GetSubscriptionsAsync(topic.Path);
                _messageReceivers.AddRange(subscriptions.Select(subscription =>
                {
                    string entityPath = EntityNameHelper.FormatDeadLetterPath(EntityNameHelper.FormatSubscriptionPath(topic.Path, subscription.SubscriptionName));

                    return new MessageReceiver(ConnectionStrings.ServiceBusConnectionString, entityPath);
                }));
            }
         }

         _messageReceivers = _messageReceivers
             .Select(r => r.IsClosedOrClosing ? new MessageReceiver(ConnectionStrings.ServiceBusConnectionString, r.Path) : r)
             .ToList();

         return _messageReceivers;
      }
   }

Есть предложения, что может быть не так?

РЕДАКТИРОВАТЬ 25/2-2019 (как ответ на комментарии):

Я использую следующие пакеты Nuget:

Microsoft.Azure.Amqp 2.3.0
Microsoft.Azure.ServiceBus 3.1.0
Microsoft.Azure.Services.AppAuthentication 1.0.3

Я добавил немного больше контекста для метода, который создает MessageReceivers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...