Microsoft.Azure.ServiceBus.ServiceBusException - отправка сообщения в очередь разделов служебной шины Azure

У меня есть следующий фрагмент кода в моем приложении, чтобы отправить сообщение в очередь разделов служебной шины Azure. Случайно я получаю универсальное ServiceBusException во время отправки сообщений.

     var serialized = JsonConvert.SerializeObject(message);
     var _client = new TopicClient(connectionString, $"{queuePrefix}{queueName}");

        var m = new Message(Encoding.ASCII.GetBytes(serialized))
        {
            MessageId = messageId,
            ContentType = "application/json"
        };

        await RetryHelper.WithRetries(async () =>
        {
            await _client.SendAsync(m);
        }, new Common.RetryPolicy(3, TimeSpan.Zero, typeof(ServiceBusTimeoutException)));

Вот мое исключение,

Служба не смогла обработать запрос; Пожалуйста, повторите операцию. Для получения дополнительной информации о типах исключений и надлежащей обработке исключений см. Http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId: 24e3ca8e-a74f-4f1b-a0e6-acf4e98a0bdc_G9, SystemTracker: client-link78653, метка времени: 2019-01-06T01: 35: 50

Microsoft.Azure.ServiceBus.ServiceBusException

Поскольку исключение не является конкретным, как указано на этой странице - https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-exceptions, мне трудно понять корень причину исключения и принять корректирующие меры.

Буду признателен за любую информацию для дальнейшего расследования.

1 ответ

Решение

ServiceBusException является базовым исключением из всех других исключений. Ошибки, возникающие на стороне брокера, отправляются обратно и переводятся. В этом случае это не то, что можно преобразовать в наиболее распространенные ошибки, описанные в документации. В такой ситуации, как эта, выбытие - это правильно, поскольку исключение было прерывистым. Сказав это, есть несколько вещей, чтобы рассмотреть.

  • Клиент внутри по умолчанию использует RetryPolicy это повторная попытка отправки. Ваши попытки должны быть применены после некоторого времени отсрочки, если это возможно.
  • Работа на стандартном уровне потенциально может страдать от более высокого уровня исключений, но вы увидите, ServerBusyException,
  • TrackingId код, предоставленный с исключением, можно использовать для открытия дела поддержки, чтобы начать расследование и лучше понять, что произошло.

Рекомендую обратиться в службу поддержки и предоставить идентификаторы отслеживания, которые вам понадобились, чтобы понять, почему вы видите эту ошибку так часто.

Другие вопросы по тегам