Azure functions 具有不同绑定的Azure函数

Azure functions 具有不同绑定的Azure函数,azure-functions,azureservicebus,azure-storage-queues,Azure Functions,Azureservicebus,Azure Storage Queues,我有一个应用程序,它为Azure服务总线队列和Azure函数发送一些事件作为消费者,因此我的Azure函数有以下代码: [FunctionName("application-events-consumer")] public async Task Run([ServiceBusTrigger("events", Connection = "ServiceBusConnectionString")] Mes

我有一个应用程序,它为Azure服务总线队列和Azure函数发送一些事件作为消费者,因此我的Azure函数有以下代码:

    [FunctionName("application-events-consumer")]
    public async Task Run([ServiceBusTrigger("events", Connection = "ServiceBusConnectionString")]
        Message message,
        string messageId,
        ILogger log)
    {
        log.LogInformation($"MessageId={messageId}");

        var jsonData = Encoding.UTF8.GetString(message.Body);
        var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
        var deserialized = JsonConvert.DeserializeObject(jsonData, settings);

        await _mediator.Publish(deserialized);
    }

问题是:我们无法在本地运行Azure Service Bus,因此我考虑使用Azure存储队列进行本地开发,因为它有一个模拟器,我将事件发送到Azure存储队列没有任何问题,因为我正在使用抽象,但从队列中读取事件有问题,因为我的Azure函数使用Azure服务总线特定的绑定,因此我无法从Azure存储队列中读取事件,是否可以对这两种情况都使用绑定?Azure存储队列和Azure服务总线取决于我的连接字符串?

否,Azure服务总线队列和Azure存储队列是两种完全不同的服务,具有完全不同的技术堆栈。因此,不能只切换两个连接字符串。它们需要不同的SDK,因为它们具有不同的绑定


您唯一可以尝试的是使用两个函数,一个具有用于本地调试的存储队列绑定,另一个具有用于在云中运行的SB队列绑定。两者都只是接收消息,并将处理放在一个通用的内部函数中。但是,这当然不会完全测试您的堆栈。

在您回答之后,我考虑过这一点,我不再在这个场景中使用Azure函数,我将注册一个消息处理程序