2017-04-07 54 views
0

場景: 我們從多個發件人發送消息(相同類型)到隊列。每個發件人將發送由一個給定組的唯一會話ID綁定在一起的消息組。組數沒有限制。在消費方面,我們有多個接收器。放棄的會話id對Azure服務總線性能有任何影響嗎?

問題: 如果接收者不叫等待session.CloseAsync()上的最後一條消息在一組,會不會有下降在我們的蔚藍服務總線的實例道路的任何性能影響?

回答

0

通過消息會話,關閉會話表明任何其他接收者都可以拿起會話並繼續處理(消息會話只能由單個接收者處理以確保FIFO語義)。您應該力爭在會話不再需要或結束時關閉會話。這樣您的客戶端就可以開始處理正在等待處理的另一個會話的消息。

有一個很好的sample with explanation如何從克萊門斯的會議工作,你也可以看看。

+0

在接收者處理給定會話的隊列中的所有當前消息之後,似乎等待大約60秒後纔會調用消息接收者的OnCloseSessionAsync方法,這實際上會導致SessionHandlerOptions.ExceptionReceived處理程序中報告的以下異常。以下是異常的詳細信息:options.ExceptionReceived:Action:OnCloseSessionAsync異常:System.NullReferenceException:未將對象引用設置爲對象的實例。 at Microsoft.ServiceBus.Messaging.IteratorAsyncResult'1。 ... – Raghu

+0

此外,一旦會議由接收方(服務總線客戶端)關閉,它似乎處理其他會話罰款。我沒有明確地結束會議。所以問題是:這是否有任何性能影響? – Raghu

+0

@拉胡,你應該用所有這些細節更新你的問題 – Thomas