azure 对.Net 6隔离工作进程服务总线触发器的消息执行MessageActions

o8x7eapl  于 2023-10-22  发布在  .NET
关注(0)|答案(2)|浏览(167)

我希望能够通过**.Net 6进程外**ServiceBusTrigger对服务总线消息执行灵活的操作。操作包括放弃、完成、延迟以及死信排队消息。也就是说,通过in-processServiceBusTriggerServiceBusReceivedMessageServiceBusMessageActions绑定可以使用相同的操作。
但是,进程外触发器似乎只能将消息体绑定为stringFunctionContext。所描述的操作是否以其他方式可用于进程外触发器?如果没有,你知道它是否在近期发布的路线图上吗?
操作如何可用于进程内触发器的示例:

[FunctionName(nameof(InProcessReceiver))]
public async Task RunAsync(
   [ServiceBusTrigger("%TOPIC_NAME%", "%SUB_NAME%", Connection="CONNECTION_NAME")] 
   ServiceBusReceivedMessage message,
   ServiceBusMessageActions messageActions
)
{
   await messageActions.DeadLetterMessageAsync(message);
   //await messageActions.AbandonMessageAsync(message);
   //await messageActions.CompleteMessageAsync(message);
   //await messageActions.DeferMessageAsync(message);
}

进程外触发器的示例,我想对它执行与上面相同的操作

[Function(nameof(OutOfProcessReceiver))]
public async Task RunAsync(
   [ServiceBusTrigger("%TOPIC_NAME%", "%SUB_NAME%", Connection="CONNECTION_NAME")] 
   string mySbMsg
)
{   
   //How to access message actions and bind them to the current message here?          
}

正如微软团队在这篇roadmap blog post中提到的,未来是孤立的。因此,我试图避免进程内,但我意识到这可能是目前唯一的解决方案。
提前感谢!

30byixjq

30byixjq1#

所描述的操作是否以其他方式可用于进程外触发器?如果没有,你知道它是否在近期发布的路线图上吗?
目前还不可能。进程外/隔离的worker SDK无法传递给Function本机SDK类型。您可以跟踪一些相关问题以获取更新。

gudnpqoy

gudnpqoy2#

对于遇到这个问题的任何人来说,MessageActions现在支持进程外的ServiceBusTrigger。该支持可从Microsoft.Azure.Functions.Worker.Extensions.ServiceBus包的5.14.0版本获得。
举个例子,看这里的公告。

相关问题