2

我們使用Azure SDK將消息發佈到Service Bus。 在網絡API調用我們反覆做這些任務爲每個到來的請求Azure服務TopicClient線程安全且可重用?

MessagingFactory factory = MessagingFactory.CreateFromConnectionString(conStr); 
factory.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), 3); 
var namespaceManager = NamespaceManager.CreateFromConnectionString(conStr); 

TopicClient topicClient = factory.CreateTopicClient(topicName); 

可以topicClient被轉換成辛格爾頓&在多個線程重複使用?

回答

3

可以topicClient被轉換成辛格爾頓&跨多個重用 線程?

是的,這是推薦的做法。從Best Practices for performance improvements using Service Bus Messaging

服務總線客戶對象,如QueueClient或messageSender,和被 通過MessagingFactory對象,它也提供了連接的 內部管理創建。 發送 消息後,您不應關閉工廠或隊列,主題和訂閱客戶端的消息傳遞 ,然後在發送下一條消息時重新創建它們。 關閉消息傳送工廠將刪除與服務總線 服務的連接,並在重新創建工廠時建立新連接。建立連接是一項昂貴的操作,您可以通過爲多個 操作重複使用相同的工廠和客戶端對象來避免這種操作。您可以安全地使用QueueClient對象從併發異步操作和多個線程發送消息 。