C# 发送邮件有时需要很长时间

C# 发送邮件有时需要很长时间,c#,azure,azureservicebus,C#,Azure,Azureservicebus,我正在使用Azure ServiceBus主题将消息从一个应用程序(WorkerRole)发送到另一个应用程序(WorkerRole)。尽快添加到消息主题队列非常重要,但是我发现TopicClient的Send()方法有时会在1秒到1min之间变化 我在Azure仪表板上的设置: 1名称空间 1主题 4订阅 我从两个不同的客户端发送到主题,但是目前我发送的消息量相当小,即每隔几秒钟我将向两个不同的订阅发送一条消息 我注意到,发送到订阅的消息在发送时间上似乎有所不同。下面是我的发送代码 pri

我正在使用Azure ServiceBus主题将消息从一个应用程序(WorkerRole)发送到另一个应用程序(WorkerRole)。尽快添加到消息主题队列非常重要,但是我发现
TopicClient
Send()
方法有时会在1秒到1min之间变化

我在Azure仪表板上的设置:

  • 1名称空间
  • 1主题
  • 4订阅
我从两个不同的客户端发送到主题,但是目前我发送的消息量相当小,即每隔几秒钟我将向两个不同的订阅发送一条消息

我注意到,发送到订阅的消息在发送时间上似乎有所不同。下面是我的发送代码

private void SendToSubscription(ReceivedQueue record, ServiceBusTopicFilter topicFilter)
{
    var connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus." + topicFilter.Topic);
    var factory = MessagingFactory.CreateFromConnectionString(connectionString);

    var topicClient = factory.CreateTopicClient(topicFilter.Topic);

    try
    {
        // The Filter is so that different handlers of messages can receive only the ones they are desiring
        var message = AsBrokeredMessage(record, topicFilter.Filter);

        _traceMonitor.TraceInformation(record.Uid, "Sending packet to topic " + "[" + record.PacketId + "] [" + topicFilter.Filter + "]");

        // NOTE:  From my logging this part seems to take a while to action sometimes
        topicClient.Send(message);
    }
    catch (MessagingException e)
    {
        // TODO:  Handle transient errors properly to ensure we don't missing packet ??
        Trace.TraceError("SendToSubscription.MessagingException :: " + e.Message);
    }
    catch (Exception ex)
    {
        Trace.TraceError("SendToSubscription.Exception :: " + ex);
    }
}

消息处理是否会影响此发送?如果需要,我可以发布这些代码。

多亏Gaurav Mantri为我指明了一个可能的方向,我找到了一种似乎更快的方法

似乎我在每个请求上都创建了一个新的MessageFactory。如图所示,在可能的情况下,对工厂进行再利用效率更高

因此,我最终做的是创建一个消息工厂池,这样通常我很少创建新的消息工厂连接


这意味着我现在看到即时消息发送到服务总线队列,唯一看到初始5秒延迟的时间是我第一次创建MessageFactory对象,然后第一次使用它。

您的
var-topicClient=factory.CreateTopicClient(topicFilter.Topic)是否可能
需要很多时间吗?请看:(部分<代码>重用工厂和客户机<代码>)。我想这是可能的,谢谢,我将在那里进行更改。然而,我的日志记录就在发送之前,在发送之后,我看到了时间延迟,因为我在这个方法之外有另一个log语句来指示发送()所花费的时间。@GauravMantri在做了一个调整之后,现在看起来速度更快了。谢谢你的帮助,不客气。你最后做了什么调整?我很想知道。