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
код, предоставленный с исключением, можно использовать для открытия дела поддержки, чтобы начать расследование и лучше понять, что произошло.
Рекомендую обратиться в службу поддержки и предоставить идентификаторы отслеживания, которые вам понадобились, чтобы понять, почему вы видите эту ошибку так часто.