Azurefunction的事件中心输入绑定我有一个Azure函数,其输入绑定到事件中心。publicstaticasyncTaskRun(TraceWriterlog,stringeventHubMessage)当函数被触发时,默认情况下每次执行我会收到多少条消息?这是1次执行=1条消息吗?我已阅读文档并了解您可以在函数的host.json文件中设置这些属性:"eventHub":{//每个接收循环接收的最大事件计数。默认值为64。"maxBatchSize":64,//底层EventProcessorHost将使用的默认PrefetchCount。"prefetchCount":256}maxBatchSize是否意味着我将在1次执行中收到64条消息?@Mikhail是对的。我只想添加以下内容:如果您使用默认的EventHub-TriggerC#模板,则创建的函数每次执行将处理1条消息。如果您需要对每次执行进行批处理,请更改以下内容:在function.json中,添加属性"cardinality":"many",如下所示。b.在run.csx中,修改函数签名并循环处理消息,例如,publicstaticasyncTaskRun(TraceWriterlog,string[]eventHubMessages){foreach(stringmessageineventHubMessages){//processmessages}}你是在问题中指定的host.json配置允许您根据工作流的需要试验正确的批处理大小和预取缓冲区。补充说明:函数目前允许最多默认5分钟的执行时间(最多可配置10分钟-2017年11月30日添加),具体取决于消费计划。您应该试验maxBatchSize和prefetchCount设置,以确保批处理的典型执行将在时间范围内完成。prefetchCount应该是maxBatchSize的3-4倍。每个Function宿主实例都由一个EventProcessorHost(EPH)支持。EPH使用检查点机制来标记最后成功处理的消息。由于函数代码主机崩溃、超时或分区租约丢失导致未捕获的异常,函数执行可能会提前终止,从而导致检查点不成功。再次重新启动函数执行时,检索到的批处理将包含来自最后一个已知检查点的消息。为maxBatchSize设置一个非常高的值也意味着您必须重新处理大批量。EventHub保证至少一次交付,但不保证最多一次交付。AzureFunctions不会尝试更改该行为。如果只有唯一消息是优先考虑的,则需要在下游工作流中处理重复数据删除。默认为一对一处理,但您也可以批量处理。将函数的签名更改为publicstaticasyncTaskRun(TraceWriterlog,string[]eventHubMessages)(如果像我一样改名,绑定参数也要重命名)参考githubissue。以上就是C#学习教程的全部内容:Azurefunction之事件中心输入绑定分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
