尝试使用 ServiceBusTrigger 时无法通过“异常绑定参数”

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

我正在编写我的第一个

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”。

谢谢!

azure-functions azureservicebus
1个回答
0
投票

我创建了一个示例

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 服务总线队列发送了一条消息,如下所示。

enter image description here

输出:

服务总线队列触发函数运行成功,如下所示。

enter image description here

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