如何通过本地配置禁用Azure Function的EventHub触发器,仅使用HTTP方式本地触发
如何通过本地配置禁用Azure Function的EventHub触发器,仅使用HTTP方式本地触发
完全懂你这种本地开发的痛点——不想被EventHub主题上的杂七杂八消息干扰,只想自己用HTTP POST请求 http://localhost:$port/admin/functions/$FunctionName 来单独触发测试,还不想每次改代码来回切换对吧?这几个本地配置方案绝对能解决你的问题:
方案一:通过配置绑定动态禁用触发器
这是最灵活的方式,靠配置项控制触发器启停,完全不用动业务代码:
- 打开本地项目的
local.settings.json,在Values节点下添加一个自定义开关:{ "Values": { // 保留你原有的其他配置 "DisableEventHubTrigger": "true" } } - 回到你的C# Function代码,给EventHub触发器的
Disabled属性绑定这个配置项:
当[FunctionName("YourActualFunctionName")] public static async Task Run( [EventHubTrigger("your-eventhub-topic", Connection = "EventHubConnectionString", Disabled = "%DisableEventHubTrigger%")] EventData[] events, ILogger log) { // 你的函数业务逻辑 }DisableEventHubTrigger设为true时,本地运行的Function就会自动禁用这个EventHub触发器,不会再消费主题消息;需要恢复的话改成false重启本地运行时就行。
方案二:精准禁用单个Function触发器
如果只想快速禁用特定的EventHub触发器,还可以直接用运行时的内置配置:
在local.settings.json的Values里添加如下配置,把YourActualFunctionName替换成你要禁用的Function名称:
{ "Values": { // 其他原有配置... "AzureWebJobs.YourActualFunctionName.Disabled": "true" } }
这样这个指定的EventHub触发器就会被本地运行时禁用,你可以放心用HTTP请求去触发测试,完全不受EventHub主题消息的干扰。
小提醒:每次修改local.settings.json后,记得重启Azure Functions本地运行时,新配置才会生效哦。

备注:内容来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

