我使用VScode在本地开发了我的Azure功能应用程序并将其推送到azure云,我有eventhub触发器功能,我以前通过VScode正常调试我的代码,但现在当我运行func host start --debuge
时,函数在我的应用程序启动但没有触发,我可以通过他们的日志看到它们在云上触发,它让我发疯,为什么它们没有在本地触发,它们被启用,我重新启动了我的功能应用程序几次,但我什么也没得到。
我的应用是https://butterflyfnapp.azurewebsites.net
答案 0 :(得分:2)
事件中心消费者信息(检查点)存储在Blob存储中。如果在开发/生产环境之间共享连接字符串到Blob存储,它们将使用相同的检查点,因此它们将相互竞争。
我的猜测是,您的云部署始终处理事件,将检查点更新到最新位置,然后本地部署采用此检查点并且不执行任何操作。
为了确保不会发生这种情况,请创建一个额外的" dev" Blob存储并将本地连接字符串设置设置为该存储。
答案 1 :(得分:2)
除了Mikhail之外,其他选项是为每个环境(例如云和开发/ VS)创建事件中心的单独使用者组,并在应用程序设置或local.settings.json中配置它们。 然后将 ConsumerGroup =“%consumergroup%”添加到函数中的EventHubTrigger参数中,其中 consumergroup 是设置中变量名称的示例。
除了上述选项之外,您仍然可以使用Http POST请求在本地测试非Http触发器功能。换句话说,您的功能可以像在门户网站中那样在本地进行测试。更多详情here。
以下是使用Http POST请求测试 EventHubTrigger 函数的示例:
url:http://localhost:7071/admin/functions/MyFunction
有效载荷:
{
"input": '{"Id":1234,"Name":"abcd"}'
}