2013-01-23 72 views
3

我有一個關於azure服務總線計費的問題。 如果我有下面的代碼,並且一個消息很長時間沒有發送說5個小時。Windows Azure服務總線帳單

假設我只有一個訂閱,代碼如下所示。 在這種情況下,在這5個小時的時間段內,我會收取什麼費用(發送一次還是下載一次,或者我是否因爲投票活動而在後臺存活天藍工具)?

enter code here 
    var subscriptionClient = SubscriptionClient.CreateFromConnectionString(ConnString, topic, subscriptionName); 
      while (true) 
      { 

       var message = subscriptionClient.Receive(); 
       if (message != null) 
       { 
        try 
        { 
         message.Complete(); 


        } 
        catch (Exception) 
        { 
         // Indicate a problem, unlock message in subscription 
         message.Abandon(); 
        } 
       } 
       else 
       { 
        Console.WriteLine("null message received"); 
       } 
       Thread.Sleep(25); 
      } 

回答

1

上面你會得到每次接收呼叫返回時收取單個消息的費用(即使結果爲空)。接收呼叫的默認超時時間爲60秒,因此在5小時內沒有消息的情況下,您的代碼將每隔一分鐘返回一次,然後再休眠25秒,因此假設每小時您將收到48條消息(1分鐘超時和25秒等待)。你可以調用Receive的超載,超時時間超過5小時。這裏連接將在它返回前保持5個小時,因此在此期間不會收費。

從粗略計算的背:一個接收器,與沒有等待一個分鐘超時並沒有真正運行的信息將得到一個消息,收取每分鐘。整個月這個數字少於5個。見計費計算器here

+0

我正在使用「subscriptionClient.Receive(TimeSpan.MaxValue);」並且我沒有發送任何消息到該訂閱,那麼連接應該是保持正確。但過了一段時間後,我得到了空消息。我想知道如何長的連接將保持活着...... – NavaRajan

+0

@Abhishek拉爾,會不會有任何不利永葆5小時(當然,有很多用戶,我們最終會在少很多收費如果招致它每5小時只返回一次空消息,而不是每分鐘一次)。 – DermFrench

+0

沒有真正的缺點,只是你不能取消這個呼叫,所以如果你想要關閉或關閉請求,那麼在那段時間內它不會返回那個控制。 –

1

唯一的消息交易將被計算(發送,接收)...天青不收取keepalive消息...

請參閱MSDN主題:從代碼http://msdn.microsoft.com/en-us/library/hh667438.aspx#BKMK_SBv2FAQ2_1

+0

我看不到它的鏈接證實,他們不收取保活? – DermFrench

+0

@DermFrench查看[發生了什麼事「服務總線連接」計費米?(http://msdn.microsoft.com/en-us/library/hh667438.aspx#BKMK_SBv2FAQ2_6),他們不收取費用,但你被限制爲2萬隻繼電器小時 – JMK

+0

@DermFrench看到這個MSDN(http://social.msdn.microsoft.com/Forums/en-US/windowsazureconnectivity/thread/53a766d7-47b8-48d8-b594-7ac7e2275bc5/)...很久以前我被問過同樣的問題,並從ClemensV那裏得到了微軟服務總線PM的回覆... – NavaRajan