部署新函数代码时,运行中的Event Hub触发函数事务如何处理?
Event Hub触发函数部署新代码时的事件处理逻辑
- 部署新代码时,函数运行时会先暂停Event Hub触发器的新事件拉取,但不会直接打断正在执行的函数实例。
- 对于已经开始处理(已消费并正在写入Blob)的事件,函数会等待当前的写入事务完成——不管是成功写入Blob,还是抛出未处理的异常导致执行失败,都会等这个流程走完才会终止该实例。
- 结合Event Hub的检查点机制来看:只有当事件处理完全完成后,检查点才会更新到该事件的位置。如果遇到极端情况(比如部署超时强制终止未完成实例),未完成的事件会在新实例启动后重新被消费,因为检查点还没记录到该事件已处理。
- 注意:如果你的Blob写入是异步操作但没正确用
await等待完成,函数可能会提前结束,导致写入被中断。这种属于代码逻辑问题,要确保所有异步操作都等待完成。
内容的提问来源于stack exchange,提问作者Lymedo
相关产品推荐
相关产品推荐

