【问题标题】:Windows Azure Service Bus BillingWindows Azure 服务总线计费
【发布时间】:2013-01-23 12:52:55
【问题描述】:

我对 azure 服务总线计费有疑问。 如果我有以下代码,并且很长时间没有发送消息,比如 5 小时。

假设我只有一个订阅,代码如下。 在这种情况下,在这 5 小时内,我会收取什么费用(一次发送一次下载一次,还是我会为 azure 在后台实施的轮询保持活动付费)?

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);
            }

【问题讨论】:

    标签: c# azure azureservicebus


    【解决方案1】:

    从上面的代码中,每次 Receive 调用返回时,您都需要为一条消息付费(即使结果为空)。接收呼叫的默认超时时间为 60 秒,因此如果 5 小时内没有消息,您的代码将每 1 分钟返回一次,然后休眠 25 秒,因此假设每小时您将收取 48 条消息的费用(1 分钟超时和 25 秒等待)。您可以调用需要超时的Receive 的重载并在那里传递 5 小时超时。在这里,连接将在返回之前保持活动 5 小时,因此在此期间不会产生任何费用。

    从信封背面计算:单个接收器在超时一分钟且没有等待且没有真正消息的情况下运行,将每分钟收取一条消息费用。整个月不到 5 美分。请参阅计费计算器here

    【讨论】:

    • 我正在使用“subscriptionClient.Receive(TimeSpan.MaxValue);”而且我没有向该订阅发送任何消息,那么连接应该是 KeptAlive 正确的。但一段时间后,我收到了 Null 消息。我想知道连接将保持多长时间......
    • @Abhishek Lal,保持活动 5 小时会有什么缺点吗(显然,如果订阅者很多,如果每次只返回一次空消息,我们最终会产生更少的费用5 小时而不是每分钟一次)。
    • 没有真正的缺点,只是您无法取消该调用,因此如果您想关闭或关闭请求,它不会在这段时间内将该控制权返回给您。
    【解决方案2】:

    仅计算消息事务(发送、接收)... Azure 不对 KeepAlive 消息收费...

    参考MSDN话题:http://msdn.microsoft.com/en-us/library/hh667438.aspx#BKMK_SBv2FAQ2_1

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2013-11-01
    • 2011-11-23
    • 2018-05-30
    • 1970-01-01
    • 2013-11-02
    • 2012-07-26
    相关资源
    最近更新 更多