繁体   English   中英

Azure function 服务总线触发器设置从 function 级别自动完成

[英]Azure function service bus trigger set autocomplete from function level

在 Azure function 应用程序中,我使用服务总线触发器来读取消息。

[FunctionName("Function1")]
public static async Task<Message> Run([ServiceBusTrigger("myqueue", Connection = "queueconnection")] Message myQueueItem, MessageReceiver messageReceiver, ILogger log)

所以有read auto complete和peek lock两种选择。 我可以使用以下配置从host.josn控制它。

{
"version": "2.0",
"extensions": {
    "serviceBus": {
        "messageHandlerOptions": {
            "autoComplete": false
        }
    }
 }
}

但是,如果我在 host.json 中执行此操作,则这适用于 function 应用程序并影响部署在该 function 应用程序中的所有功能。 所以我想知道以下选项是否可行,如果可以,如何实现。

  1. 在 function 中具有自动完成属性,它在我们配置 ServiceBusTrigger 的地方自行完成。
  2. 如果它可以在 function 级别设置,通过将属性移动到 function 应用程序配置使其可配置。

Azure 函数服务总线触发器的默认语法格式如下:

[FunctionName("ServiceBusQueueTriggerCSharp")] public static void Run( [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] ... )

这里的myqueue是Azure Function中886982359588级别声明的Queue Name

同样的,我们有很多属性(properties)包括AutoComplete都可以在Function Level中使用,你可以参考这里查看 Service Bus Trigger Function Level Properties 及其功能的更多信息。

如果 Azure Function Stack 属于 .NET Core 3.1,则在FunctionsStartup文件中手动配置AutoComplete选项,语法如下:

builder.Services.Configure(delegate(ServiceBusOptions options)
{
    options.MessageHandlerOptions.AutoComplete = false;
});

有关手动配置自动完成选项的更多信息,请参阅此处

如果 Azure 886982359588 Stack 属于大于 .NET Core 3.1,则在ServiceBusTrigger Function Class Function AutoComplete

[FunctionName("ProcessMessage")] 
public async Task Run( 
// Setting AutoComplete to true (the default) processes the message non-transactionally 
[ServiceBusTrigger("ProcessMessage", AutoCompleteMessages = true)] ServiceBusReceivedMessage message, ILogger logger, ExecutionContext executionContext) 
{ 
await endpoint.ProcessNonAtomic(message, executionContext, logger); 
}

将 AutoComplete 设置为 false 以事务方式处理消息

参考这里,提供了基于 Function Extension Version 的 ( AutoComplete , AutoCompleteMessages ) 命名区分的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM