我刚刚将 Azure Functions 升级到 v4。我有一个服务总线队列触发器来处理队列的消息。
升级后,它不再被解雇,我不明白为什么以及如何调查。
代码没有从一个版本更改为另一个版本,我找不到关于此主题的任何重大更改。
该函数的日志没有显示任何错误或执行情况,并且消息卡在队列中,没有附加信息。
这是我的触发器:
public class IncomingQueueTrigger
{
private string _body;
private HttpResponseMessage response;
private SignalErrorQueueItem _errorObj;
private readonly short _maxTriesCount = 2;
private readonly HttpClient _client;
public IncomingQueueTrigger(IHttpClientFactory httpClientFactory)
{
_client = httpClientFactory.CreateClient();
}
[FunctionName("IncomingQueueTrigger")]
public async Task Run([ServiceBusTrigger("%my_queue_name%", Connection = "my_connection_string")] ServiceBusReceivedMessage myQueueItem, string label, ServiceBusReceiver messageReceiver)
{
// my code
}
}
最佳答案
在本地执行函数时出现此错误:
Microsoft.Azure.WebJobs.Host: Error indexing method 'IncomingQueueTrigger'. Microsoft.Azure.WebJobs.Host: Can't bind parameter 'messageReceiver' to type 'Azure.Messaging.ServiceBus.ServiceBusReceiver'.
在谷歌上搜索我发现this其中我了解到,通过函数更新,我还必须更新消息接收器的类型:
ServiceBusReceiver
=> ServiceBusMessageActions
现在一切都恢复正常了。
感谢 HariKrishnaRajoli-MT 建议我尝试在本地运行这些函数。
关于Azure Functions V4 NET 6 服务总线触发器未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72459021/