我正在编写我的第一个
ServiceBusTrigger
ed Azure 函数,但无法让它成功执行。
与队列的连接正在工作,并且当我注入消息时该函数正在尝试执行(我通过 Azure 门户中的服务总线资源管理器执行此操作)。正如预期的那样,在配置的重试次数失败后,该消息也会移至死信队列。
这是代码:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace PlayerProcessing.PendingPlayerCustomId;
public class QueueWorker
{
private readonly ILogger _log;
public QueueWorker(IServiceProvider serviceProvider)
{
_log = serviceProvider.GetService<ILogger<QueueWorker>>();
}
[FunctionName("ServiceBusQueueTriggerCSharp")]
public void Run(
[ServiceBusTrigger("pending-player-custom-id", Connection = "AzureServiceBus")]
string myQueueItem
)
{
_log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
}
(我最初尝试使用 JSON 对象和
application/json
内容类型,但我什至无法让它与字符串和 text/plain
内容类型一起使用。)
我得到的错误:
System.Private.CoreLib:执行函数时出现异常:ServiceBusQueueTriggerCSharp。 Microsoft.Azure.WebJobs.Host:异常绑定参数“myQueueItem”。
谢谢!
我创建了一个示例
ServiceBusQueueTrigger
函数并成功从 Azure 服务总线队列获取消息。
连接可能无法正确检索,或者由于
local.settings.json
文件中的配置不正确而导致连接过期
确保您已在
local.settings.json
文件中添加 Azure 服务总线队列连接字符串,如下所示。
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<StoragecConneString>",
"FUNCTIONS_INPROC_NET8_ENABLED": "1",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AzureServiceBus": "<ServiceBusQueueConnecString>"
}
}
代码:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
namespace FunctionApp2.PendingPlayerCustomId
{
public class QueueWorker
{
[FunctionName("ServiceBusQueueTriggerCSharp")]
public void Run(
[ServiceBusTrigger("pending-player-custom-id", Connection = "AzureServiceBus")]
string myQueueItem,
ILogger log
)
{
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
}
}
Azure 服务总线队列:
我向 Azure 服务总线队列发送了一条消息,如下所示。
输出:
服务总线队列触发函数运行成功,如下所示。