Microsoft.Azure.ServiceBus.ServiceBusException - 向 Azure 服务总线主题队列发送消息

问题描述 投票:0回答:1

我的应用程序中有以下代码片段,用于将消息发送到 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://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-exceptions,我发现很难了解异常的根本原因并采取纠正措施。

如果有任何信息可以进一步调查,我将不胜感激。

azure-service-fabric azure-servicebus-queues azure-servicebus-topics
1个回答
3
投票

ServiceBusException
是所有其他异常的基本异常。代理端发生的错误将被发回并进行翻译。在这种情况下,它不能转换为文档中描述的最常见错误。在这种情况下,重试是正确的做法,因为异常是间歇性的。话虽如此,需要考虑的事情很少。

  • 客户端内部默认使用重试发送操作的
    RetryPolicy
    。如果可能的话,您应该在一段回退时间后进行重试。
  • 在标准层上运行可能可能会遭受更高的异常率,但您会看到
    ServerBusyException
  • 随异常一起提供的
    TrackingId
    代码可用于打开支持案例以开始调查并更好地了解发生的情况。

建议联系支持人员并提供您必须的跟踪 ID,以帮助您了解为什么经常看到此错误。

© www.soinside.com 2019 - 2024. All rights reserved.