Azure 函数未向事件网格报告失败



>@azuresupport #azTechHelp 我有一个事件网格主题,其中包含具有 CosmosDB 输出绑定的 Azure 函数订阅者。这是函数

export default async (context, eventGridEvent) => {
try {
context.log(`Saving Asset`);
context.log(`subject : ${eventGridEvent.subject}`)
context.log(`eventType : ${eventGridEvent.eventType}`)
var importObject = eventGridEvent.data;
if(!importObject.asset.id)
{
throw new Error("Supplied Asset does not have an ID specified, aborting!");
}
else
{
context.log(`Successfully exported asset(${eventGridEvent.data.objectId}) to Cosmos`);
context.bindings.outputDocument = importObject.asset;
}
}
catch (err) {
context.log.error(err);
context.log.error(`Error Processing Event Grid Object : ${eventGridEvent}`);
throw(err);
}
};

此函数中的逻辑(通常(永远不会失败,但 Cosmos DB 绑定可能会失败(并且由于吞吐量限制而失败(。因此,函数失败,但没关系,我们的事件网格会重试,对吗?错!

图片 : Azure 函数故障

问题是事件网格不会注册失败,进而从不重试事件。

图片 : EG 日志

现在,我们可以对函数进行编码以在函数内执行 Cosmos CRUD 并强制错误,或者创建我们自己的绑定,但我们希望坚持使用内置的 Cosmos 绑定。

蔚蓝中的某个人可以看看吗?

这可能是因为一旦事件到达Azure 函数,它就被视为交付成功,并且函数执行的结果并非对 http 响应没有贡献

这是一个已知问题,并在最新的事件网格扩展版本中修复,我会说你应该在一两周内得到,如果没有,请在这里打开一个问题

最新更新