将消息放入服务总线中的队列后未触发 Azure 函数

Azure Function is not triggerd after putting a message to a queue in service bus

我在服务总线中有一个队列。将消息放入队列后,应触发 azure 逻辑应用程序和 azure 函数并处理内容。 我的 Azure 逻辑应用程序已触发,但未触发我的 azure 函数。我的 azure 函数代码:

[FunctionName("ReadMEssageFromQueue")]
    public static void Run([ServiceBusTrigger("messagequeue", Connection = "AzureWebJobsStorage")]string myQueueItem, ILogger log)
    {
        log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
    } 

主机json:

{
    "IsEncrypted": false,
  "Values": {
  
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "AzureWebJobsStorage": "******" // connection string of my service bus
  }
}

我应该在服务总线队列中设置一些东西来向两个资源发送消息吗?

Azure 服务总线队列消息仅由一个处理器拾取。所以我认为在你的情况下,逻辑应用程序首先获取并使用消息,并且消息不可用于函数处理。您可以尝试暂时禁用逻辑应用程序并让功能选择消息以确认这一点。

参考:

您可以从您的逻辑应用程序触发 Azure 函数(不确定它是否对您的用例有帮助),或者您可以使用 Azure 服务总线主题,因为主题支持多个消费者可以 subscribe到一个话题。 从 cost 的角度来看,前一个选项对您来说可能是更好的方法,因为您需要使用服务总线的标准层才能使用主题功能,这意味着您需要在当前设置基础上支付额外费用。

此外,您可能希望为服务总线连接字符串使用其他名称,因为 AzureWebJobsStorage 用于存储帐户连接字符串