Azure 服务总线触发函数 - 绑定到 MessageReceiver
Posted
技术标签:
【中文标题】Azure 服务总线触发函数 - 绑定到 MessageReceiver【英文标题】:Azure Service Bus Triggered Function - Bind to MessageReceiver 【发布时间】:2020-05-03 14:52:00 【问题描述】:我正在尝试绑定到 Azure 服务总线触发函数中的 MessageReceiver
。
我的目标是处理死信队列消息并完成它们。
public static class Function1
[FunctionName("Function1")]
public static async Task Run(
[ServiceBusTrigger(
"<topicName>",
"<subscriptionName>/$DeadLetterQueue",
Connection = "connectionstring")]
Message message,
ILogger logger,
MessageReceiver messageReceiver)
// TODO: Perform some actions
await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
问题是它无法绑定到MessageReceiver
类。
Microsoft.Azure.WebJobs.Host:索引方法“Function1”出错。 Microsoft.Azure.WebJobs.Host:无法将参数“receiver”绑定到类型 MessageReceiver。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用了扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。
关于绑定失败的任何想法?
【问题讨论】:
我修复了同样的问题,但出于某些单元测试目的,我必须使用 IMessageReceiver。但问题又来了。知道变量名应该是什么吗? 【参考方案1】:我知道出了什么问题。我使用 'receiver' 作为 MessageReceiver 的参数名称。原来参数名称必须是'messageReceiver'。我最初看到的示例使用了“接收器”,所以这可能已经改变了吗?
【讨论】:
谢谢。我整个早上都在用头撞桌子,试图弄清楚为什么这不起作用。而且你的帖子比我发现的许多说你应该使用“reciever”作为参数名称的帖子都早。以上是关于Azure 服务总线触发函数 - 绑定到 MessageReceiver的主要内容,如果未能解决你的问题,请参考以下文章
保护非 Http 触发的 Azure 函数,如服务总线触发器
失败的消息不会从 Azure 服务总线触发函数移动到 DLQ