【问题标题】:How are brokered connections counted?如何计算代理连接?
【发布时间】:2018-04-23 13:50:48
【问题描述】:

查看 Azure 服务总线以替换一些不可靠的 RabbitMQ 服务器,但不清楚定价的一件事是,出于计费目的,它们究竟算作“代理连接”吗?

我们有大约 12 台机器正在处理超过 1,000 个队列的消息(并且一台机器填充队列),那么在 1 台机器上运行的 1 个应用程序是否算作一个代理连接(无论它正在侦听多少个队列)?还是每台机器都算作 1,000 多个代理连接(可以很快非常加起来)?

假设我做了这样的事情:

var queues = queueNames.Select(q =>
{
    if (!manager.QueueExists(q))
    {
        manager.CreateQueue(q);
    }
    return new QueueClient(ServiceBusConnectionString, q);
}).ToArray();

Add queueNames 是一个由 10 个字符串组成的数组。那是 10 个代理连接吗? 1 ?还是别的什么?

【问题讨论】:

    标签: azure azureservicebus


    【解决方案1】:

    当您保持队列连接打开并等待消息时(例如,如果您保持队列打开 30 秒等待消息),队列轮询会遇到代理连接的成本。如果您使用默认的零超时(当没有消息要接收时它只会返回 null),它不会算作代理连接。非零超时的一个例子是使用类似Receive(TimeSpan) 的东西,你等待指定的超时。

    您可以使用OnMessageAsync 来侦听消息而不是轮询,这看起来不像是代理连接。

    至于它的计算方式,看起来这是一个月内平均每小时的并发连接数。定价指南中有一些很好的示例计算。

    来自pricing guide

    代理连接定义为以下之一:

    • 从客户端到服务总线队列或主题/订阅的 AMQP 连接。

    • 从服务总线主题或队列接收消息的 HTTP 调用 接收大于零的超时值。

    服务总线对超过包含数量(标准层为 1,000)的并发代理连接的峰值数量收费。峰值按小时计算,除以一个月内的 744 小时后按比例计算,并在每月计费期间累加。包含的数量(每月 1,000 个代理连接)在计费期结束时根据按比例分配的小时峰值总和应用。

    您可能应该通过计费门户中的支持与 Azure 团队确认这一点,他们通常对此类请求非常满意。

    【讨论】:

    • 旁白:不确定 1000 个队列的要求,您不能有 1 个队列并在序列化消息中识别“源”而不是跟踪这么多队列吗?
    • 问题是一些队列(来源)发布 > 100 万条消息并被备份。这会阻止其他队列(源)及时处理消息。但无论如何,采取不同的方法可能是值得的。
    猜你喜欢
    • 2020-01-27
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多