我有一个.Net应用程序托管为Azure应用程序服务(Web作业),它从一个事件中心读取并对这些消息执行一些操作。此应用程序不受CPU或内存的限制,而是我希望根据事件中心的传入消息量来进行扩展。
查看“事件中心”的“传入和传出消息”指标,我确定该应用程序每个实例每分钟可以处理大约12,000条消息。
但是我不知道如何将其设置为自动缩放设置。鉴于上述情况,我尝试将其设置为在传入消息大于10000时将实例计数增加1。但是,当事件集线器的“度量”下看到的传入消息约为45000并且实例计数为3时,什么也不会发生。扩大规模,但事实并非如此。为什么?
这是我的体重秤设置的样子:
{
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
},
"metricTrigger": {
"metricName": "EHINMSGS",
"metricNamespace": "",
"metricResourceUri": "my eventhubs",
"operator": "GreaterThan",
"statistic": "Average",
"threshold": 10000,
"timeAggregation": "Average",
"timeGrain": "PT1M",
"timeWindow": "PT5M"
}
},
{
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
},
"metricTrigger": {
"metricName": "EHINMSGS",
"metricNamespace": "",
"metricResourceUri": "my eventhubs",
"operator": "LessThan",
"statistic": "Average",
"threshold": 1000,
"timeAggregation": "Average",
"timeGrain": "PT1M",
"timeWindow": "PT5M"
}
}
答案 0 :(得分:0)
我不确定这是否是答案,但是对于Azure Function,可以并行运行的函数实例数量与事件中心具有分区的数量一样。因此,例如,如果事件中心有两个分区,则一次只能有两个作业。
您可以在此处了解更多信息:https://medium.com/@jeffhollan/in-order-event-processing-with-azure-functions-bb661eb55428