我们有一个azure Web作业,在functions.cs文件中有两个方法。这两个作业都是从Azure Service Bus中的不同主题触发的。
由于它在运行时使用反射来确定由命中主题的消息运行/触发的函数,因此代码中没有对这些方法的引用。
public static async Task DoWork([ServiceBusTrigger("topic-one", "%environmentVar%")] BrokeredMessage brokeredMessage, TextWriter log) {}
public static async Task DoOtherWork([ServiceBusTrigger("topic-two", "%environmentVar2%")] BrokeredMessage brokeredMessage, TextWriter log) {}
根据运行时设置的变量,我需要让这个Web作业同时运行这两种方法,或者只运行其中一种方法(它不会更改一个正在运行的作业,但它会被读入当工作开始时)。我不能简单地根据变量将方法的内部包装在if()
中,因为这会读取并销毁消息。
是否可以使用JobHostConfiguration
(IServiceProvider
)来实现此目的,因为它是在运行时构建的。这是JobHostConfiguration.IJobActivator
可以用于吗?