具有不同绑定的Azure函数



我有一个应用程序,它作为消费者为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服务总线,所以我考虑只使用Azure存储队列进行本地开发,因为它有一个模拟器,我将事件发送到Azure存储队列没有任何问题,因为我使用的是抽象,但从队列中读取事件有问题,因为Azure函数使用了特定于Azure服务总线的绑定,所以我无法从Azure存储队列中读取事件,是否可以对这两种情况都使用绑定?Azure存储队列和Azure服务总线取决于我的连接字符串?

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

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

最新更新