C#服务总线队列触发器永远不会被触发

时间:2020-05-21 11:32:22

标签: c# azure azure-functions azureservicebus azure-servicebus-queues

我创建了一个非常简单的.net core 3.1函数项目,该项目具有应基于服务总线队列触发的功能。

代码如下:

[FunctionName("PublishImage")]
public static async Task Run(
    [QueueTrigger("publishimage")]string message,
    ILogger log)
{
    log.LogInformation($"Started to publish image: {message}");
}

当我在本地启动该功能时,我看到他找到了该功能,并且没有任何异常。

然后,当我向队列发送消息时。它不会被触发。在Azure中,我看到队列中现在有4条消息,并且无论我做什么都不会被触发,在本地也看不到任何异常,如果我尝试在启用了应用程序见解的Azure中运行它,则看不到任何异常或任何信息。同样打开日志记录也不会提供任何信息。

我的host.json现在看起来像这样:

{
    "version": "2.0",
    "functionTimeout": "04:00:00",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout": "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8
        }
    }
}
  • 已安装Microsoft.NET.Sdk.Functions 3.0.7。
  • 天蓝色的运行时间约为3
  • 已设置并验证了应用程序设置AzureWebJobsServiceBus

2 个答案:

答案 0 :(得分:1)

是的,您混淆了Azure Service Bus和Azure存储队列。 QueueTrigger用于存储队列,ServiceBusTrigger用于服务总线。

答案 1 :(得分:0)

我找到了解决方案。我正在使用服务总线队列。因此,我不应使用QueueTrigger,而应使用ServiceBusTrigger。将代码更改为以下代码可以解决问题:

[FunctionName("PublishImage")]
public static async Task Run(
    [ServiceBusTrigger("publishimage")]string message,
    ILogger log)
{
    log.LogInformation($"Started to publish image: {message}");
}