Windows Azure 服务总线计费

3
我有一个关于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);
            }
2个回答

1

我看不到链接中哪里确认他们不收取保持连接的费用? - DermFrench
@DermFrench 请查看“Service Bus Connections”计费表怎么了?,他们不会收费,但您的中继小时数受到了限制,最高为200万小时。 - JMK
@DermFrench,请查看此MSDN(http://social.msdn.microsoft.com/Forums/en-US/windowsazureconnectivity/thread/53a766d7-47b8-48d8-b594-7ac7e2275bc5/)...我很久以前就被问过同样的问题,并从微软的Service Bus PM ClemensV那里得到了答案... - NavaRajan

1
从上面的代码中,每当Receive调用返回时(即使结果为null),您将收取单条消息的费用。 Receive调用的默认超时时间为60秒,因此如果在5小时内没有消息,则您的代码将每分钟返回一次,然后休眠25秒,因此每小时您将收取48条消息的费用(1分钟超时和25秒等待)。 您可以调用带有超时的Receive重载,并在那里传递5小时的超时时间。 在这里,连接将保持活动状态5个小时,然后才会返回,因此在此期间不会发生任何费用。
根据草稿纸计算:单个接收器,使用一分钟的超时时间,没有等待和实际消息将每分钟收取一条消息的费用。整个月少于5美分。请参见此处的计费计算器。

我正在使用"subscriptionClient.Receive(TimeSpan.MaxValue);",并且我没有向该订阅发送任何消息,那么连接应该保持活动状态。但是过一段时间后,我会收到空消息。我想知道连接将保持多长时间处于活动状态... - NavaRajan
@Abhishek Lal,保持活动状态5个小时会有什么不利之处吗(显然,如果只返回一次空消息每5个小时而不是每分钟返回一次,我们将遭受更少的费用)。 - DermFrench
没有真正的缺点,只是您无法取消该调用,因此,如果您想要关闭请求或关闭它,它将在那段时间内不会将控制返回给您。 - Abhishek Lal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接