基于事件的Container App触发机制及C#对接Service Bus的疑问
关于Container Apps处理Service Bus主题消息的触发模型确认
你的理解完全正确,以下是关键细节梳理:
Container Apps与Azure Functions的核心差异
Azure Functions是事件驱动的无服务器执行模型:事件(比如Service Bus新消息)触发时,平台会按需启动函数实例,处理完事件后自动销毁实例,完全按需执行。
而Container Apps的默认运行模式是持续运行的容器实例:你看到的BackgroundService消息泵示例是标准模式——容器启动后会一直保持运行,主动监听Service Bus主题的新消息,不会在处理完单条消息后停止。KEDA的真实作用
KEDA在Container Apps中仅负责事件驱动的扩缩容:它会监控Service Bus主题订阅的消息堆积量,当消息数超过阈值时自动扩容实例数量,消息处理完成后可以配置缩容到0个实例。但KEDA不会触发容器的单次执行逻辑——只要容器实例处于运行状态,就会由应用自身的消息泵持续监听消息,而非像Functions那样由平台触发单次处理。关于定价与按需的误解
Container Apps的计费模式(按vCPU、内存和请求计费)看似和Functions类似,但本质不同:Functions是按执行次数、执行时长计费,而Container Apps是按容器运行时长计费(即使缩容到0时不收费)。当KEDA将实例缩到0后,有新消息时KEDA会启动实例,但实例启动后会持续运行(直到再次缩容),而非处理完当前消息就停止。
内容的提问来源于stack exchange,提问作者user20326571
相关产品推荐
相关产品推荐

