为什么我的ServiceBusTrigger没有被触发?

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

我有一个 Azure Function App,它处理来自 Azure 服务总线主题的一些消息。我有一些消息传递给 ASB,并且有一些消息来自我的主题订阅。但是,当我在本地运行指向该特定订阅的应用程序时,它仍然不会被触发。我确实已经使用所有连接字符串正确配置了我的应用程序。您建议如何诊断这个问题?

仅供参考:我在本地设置中配置了所需的参数。

c# azure-functions azureservicebus azure-servicebus-topics azure-servicebus-subscriptions
2个回答
0
投票
  • 检查
    connection
    属性的
    ServiceBusTrigger
    属性,该属性应引用
    ServiceBusConnectionString
  • 现在,您需要在
    local.settings.json
    中为 azure 的本地和应用程序设置提供相同的名称。
  • 下面是使用 Azure Functions 的 ServiceBusTrigger 的示例代码。

 [FunctionName("ServiceBusQueueTriggerCSharp")]                    
    public static void Run(
        [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] 
        string myQueueItem,
        Int32 deliveryCount,
        DateTime enqueuedTimeUtc,
        string messageId,
        ILogger log)
    {
        log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
        log.LogInformation($"DeliveryCount={deliveryCount}");
        log.LogInformation($"MessageId={messageId}");
    }

  • 查看此 Microsoft 文档,了解有关使用 Azure ServiceBus 触发器创建 Azure Function 的完整信息。

0
投票

如果您在 Visual Studio 中本地开发 Azure Function,并且未触发

ServiceBusTrigger
,请尝试在项目命令行参数中设置
--verbose
标志。如果您随后看到此错误:

System.Private.CoreLib:连接尝试失败,因为 关联方在一段时间后未做出适当回应,或 建立的连接失败,因为连接的主机未能 回应。错误代码:超时(服务通信问题)。

这是一个连接问题,可能是公司防火墙。尝试将其添加到

host.json

"extensions": {
  "serviceBus": {
    "transportType": "amqpWebSockets"
  }
}

值得注意的是,在旧版本的服务总线包中,可以将 TransportType=AmqpWebSockets 添加到连接字符串中。在较新的软件包中(我使用的是 Azure.Messaging.ServiceBus 7.17.3),这不再起作用,因此,如果您在升级后开始看到此问题,这可能就是原因。

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