0
我正在使用Azure ServiceBus主題將消息從一個應用程序(WorkerRole)發送到另一個應用程序(WorkerRole)。儘可能快地添加到消息主題隊列是很重要的,但是我發現TopicClient
的方法有時在1秒到1分鐘之間變化。TopicClient.Send需要很長時間才能發送消息
的設置我有我的Azure的儀表盤:
- 1命名空間
- 1主題
- 4訂閱
我送的話題從2個不同的客戶但量我發送的消息在此刻相當小,即每隔幾秒我會向2個不同的訂閱發送消息。
我注意到的是,發送到訂閱的消息似乎隨着發送時間而變化。以下是我的發送代碼。
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);
}
}
消息的處理會影響發送嗎?如果需要,我可以發佈該代碼。
有沒有可能你的'var topicClient = factory.CreateTopicClient(topicFilter.Topic)'花了很多時間?請參閱:https://msdn.microsoft.com/en-us/library/azure/hh528527.aspx(「重用工廠和客戶端」部分)。 –
這是可能的,我想謝謝,我會在那裏做出改變。然而,我的日誌記錄就在發送之前,之後我看到時間滯後,因爲我在此方法之外有另一個日誌語句來指示Send()所花費的時間。 – dreza
@GauravMantri做了一個調整後,現在看起來速度更快。感謝您的幫助 – dreza