Azure函数:ICollector <T>与IAsyncCollector <T>

Chr*_*lum 18 azure-webjobs azure-webjobssdk azure-functions

在编写C#函数时,Azure函数之间ICollector<T>和之间的区别是什么IAsyncCollector<T>(也适用于WebJobs)?

我从样本中了解到这些是我可以用来将函数参数绑定到输出绑定的接口.我也理解这两个接口相应地具有非异步和异步方法签名(即ICollector<T>.Add(item)IAsyncCollector<T>.AddAsync(item)).但他们在封面下做了什么?它们实际上是将数据发布到输出绑定,还是在函数执行结束时进行内部缓冲和刷新(在这种情况下,为什么会有AddAsync方法)?

mat*_*ewc 20

ICollector<T>.Add(item)将始终立即对基础服务执行添加操作.例如,Queue绑定的实现将在添加消息时立即将消息排入队列.

IAsyncCollector<T>.AddAsync(item)根据底层服务是否支持批处理,行为因绑定而异.在这种情况下,AddAsync实际上只能通过相应的方法保存要刷新的添加项IAsyncCollector<T>.FlushAsync.当函数成功完成时,FlushAsync将自动调用.您可以允许自动刷新行为为您冲洗,或者您可以FlushAsync根据需要选择在您的功能中手动调用.

批处理可以允许绑定以最有效的方式与底层服务进行交互.例如,对于Azure表,可以在单个批处理操作中更新/保留多个实体.