我有一个具有ServiceBusTrigger
绑定的Azure功能应用程序。
public static void Run([ServiceBusTrigger("my-queue")]string request, TraceWriter log)
我想在本地调试它而无需连接到Azure Service Bus;但是,没有可用的ASB仿真器(Using Azure Service Bus in local)。因此,我的下一步工作是在本地调试时切换到存储队列(因为我在我的设备上运行Azure存储模拟器)。
public static void Run([QueueTrigger("my-queue")]string request, TraceWriter log)
我的问题是:我们是否有办法定义绑定,因为它会在本地环境中侦听存储队列,但在部署到生产环境时会切换到服务总线?
这听起来像是XY问题,所以如果有人有更好的想法来解决我的X问题,那么我全都是耳朵。
答案 0 :(得分:1)
不支持基于配置替换触发器类型。所以,你必须在某个地方做一个解决方法。选项:
使用Service Bus进行测试,但使用不同的命名空间或队列名称。连接字符串是应用程序设置的一部分,因此您可以根据环境进行设置。您可以使用ServiceBusTrigger("%my-queue%")
配置队列名称,在这种情况下,应用会搜索my-queue
应用设置。
您可以将函数体移动到共享方法,然后创建两个相同的Azure函数:一个具有Service Bus触发器,一个具有Storage Queue触发器。将Disable
属性添加到它们中,并使此属性声明设置名称。如果该设置设置为true
,则该功能将被禁用。根据环境禁用一个或另一个功能。