我的問題是,服務總線中的接收器如何偵聽新消息?它是否會在一段時間之後向服務總線發送任何新消息的查詢請求,或者服務總線將任何新消息推送到連接的接收器?如何從隊列/訂閱向接收者發送消息?
我使用的是.NET客戶端庫,它默認使用SBMP協議。
我的問題是,服務總線中的接收器如何偵聽新消息?它是否會在一段時間之後向服務總線發送任何新消息的查詢請求,或者服務總線將任何新消息推送到連接的接收器?如何從隊列/訂閱向接收者發送消息?
我使用的是.NET客戶端庫,它默認使用SBMP協議。
當你手動接收(或批量接收)時,它並不重要,因爲服務器會給你任何你所要求的(或者它在那個時候如果它低於要求的)。如果您使用帶回調的OnMessage API,無論使用哪種傳輸方式,無論是推送還是拉取,您都會在每封郵件中獲得回調調用。使用SBMP消息由客戶端從代理進行輪詢。通過AMQP,它們被經紀人推送到客戶端。
我的答案指的是通過AMQP運行的Azure服務總線SDK(鏈接 - >https://github.com/Azure/azure-service-bus-java)。
MessageReceiver對象用於在需要時從隊列接收消息。
該類有一個接收函數,它將服務器等待時間作爲參數(缺省值爲30秒)。
這意味着如果隊列中沒有消息,它將不會立即返回,而是會等待30秒或任何時間指定新消息。
如果之前有一條新消息,那麼它將在該點返回。
這基本上稱爲長輪詢。
它保存客戶端連續輪詢隊列。
你使用什麼客戶端和協議(SBMP或AMQP)? –
我正在使用.NET客戶端庫,默認情況下它使用SBMP。 –