我已经阅读了很多关于如何使用命令式输入和输出绑定的帖子——我明白了,非常酷。
然而,我一直在努力寻找一种创建命令式触发器的方法。我不确定目前这是否可行。
我想做的事:
- 在实现 IWebJobsStartup 的 Startup.cs 中,在运行时为 Azure 函数创建一个 EventHubTrigger,以便我可以动态指定 ConsumerGroup 属性,允许我在 Azure 部署槽中运行时使用特定的 ConsumerGroup,而不是在实时槽中使用的 ConsumerGroup . 我不希望他们竞争事件,我的零停机部署策略取决于此。
- 或者类似的方法...
我在做什么:
- 在我的 Azure DevOps 发布过程中,确保我有一个粘性插槽应用程序设置,并将其设置为插槽与在相应插槽中的不同值。
- 在我的触发器属性中,将插槽设置附加到用于 ConsumerGroup 的配置值中,如下所示:
[EventHubTrigger("my-rapids-event-hub", Connection = "EventHub.ConnectionString",
ConsumerGroup = "%EventHub.ConsumerGroup%-%SlotConfigExtension%")] EventData[] events,
[EventHub("my-river-eventhub", Connection = "EventHub.ConnectionString")] IAsyncCollector<string> outputEvents,
ILogger log)
后一种方法有效,因为它成功地连接了 ConsumerGroup 配置值:
%EventHub.ConsumerGroup%-%SlotConfigExtension%
不过,感觉有点不太理想,我更愿意确定如何完成第一种方法,这样我就可以在发布过程中放弃额外的 Azure Powershell 步骤。
提前致谢!