[英]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 应用程序中的所有功能。 所以我想知道以下选项是否可行,如果可以,如何实现。
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.