对 .Net 6 独立工作线程 ServiceBusTriggers 的消息执行 MessageActions

问题描述 投票:0回答:2

我希望能够通过 .Net 6 进程外

ServiceBusTrigger
对服务总线消息执行灵活的操作。操作包括放弃、完成、推迟以及死信排队消息。 IE。通过
in-process
ServiceBusReceivedMessage
ServiceBusMessageActions
ServiceBusTrigger
绑定可以执行相同的操作。

但是,进程外触发器似乎只能将消息正文绑定为

string
,以及
FunctionContext
。所描述的操作是否可以通过其他方式用于进程外触发器?如果没有,您知道它是否在近期版本的路线图中吗?

如何对进程内触发器使用这些操作的示例:

[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?          
}

正如微软团队在这篇路线图博客文章中提到的那样,未来是孤立的。因此,我试图避免进程内,但我意识到这可能是目前唯一的解决方案。

提前致谢!

c# azure azure-functions azureservicebus .net-6.0
2个回答
1
投票
所描述的操作是否可以通过其他方式用于进程外触发器?如果没有,您知道它是否在近期版本的路线图中吗?

目前还不可能。进程外/隔离工作 SDK 无法传递给 Function 本机 SDK 类型。您可以跟踪一些相关问题的更新。

  • ServiceBusTrigger 上的 IMessageReceiver
  • 使用ServiceBusTrigger,如何从string/byte[]转到Message?

0
投票
对于任何遇到这个问题的人,现在支持进程外 ServiceBusTriggers 的 MessageActions。 Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 包的

5.14.0版本提供了支持。

例如,请参阅公告

此处

© www.soinside.com 2019 - 2024. All rights reserved.