【问题标题】:Azure Function not reporting failure to Event GridAzure 函数未向事件网格报告失败
【发布时间】:2018-06-15 09:51:10
【问题描述】:

@azuresupport #azTechHelp 我有一个带有 Azure Function 订阅者的事件网格主题,该订阅者具有 CosmosDB 输出绑定。这是函数

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 绑定可能会失败(并且由于吞吐量限制而失败)。所以函数失败了,但没关系,我们的事件网格会重试,对吧?错了!

Image : Azure Function Failures

问题在于事件网格没有记录失败,而反过来从不重试该事件。

Image : EG Logs

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

Azure 中的人可以看看吗?

【问题讨论】:

标签: azure-eventgrid


【解决方案1】:

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

这是一个已知的issue 并已修复在最新的eventgrid extension release,我会说你应该在一两周内收到,如果没有,请打开一个问题here

【讨论】:

  • 谢谢 watashiSHUN,我会在几周后检查一下,看看问题是否得到解决。
猜你喜欢
  • 2018-01-26
  • 2021-12-03
  • 1970-01-01
  • 2018-12-12
  • 2021-11-02
  • 2020-04-24
  • 2021-12-01
  • 1970-01-01
  • 2019-06-11
相关资源
最近更新 更多