基于计时器和服务总线上的新消息启动 Azure Web 作业?

Start Azure Web Job based on Timer AND new message on Service Bus?

我想知道是否可以通过 Azure 服务总线(主题)上的新消息或计时器出现时触发 Web 作业 运行。我知道我可以创建两个单独的 Web 作业,但我希望将两者结合起来,因为 99% 的逻辑都是相同的。

有关在服务总线中准备好消息时我们如何启动 Web 作业的示例:

[Singleton]
        public  void ProcessQueueMessage([ServiceBusTrigger("%TopicName%", "%SubscriptionName%")] BrokeredMessage message, TextWriter log)
        {
// Processing code here
}

关于我们如何基于计时器启动 Web 作业的示例:

public static void ProcessByTimer([TimerTrigger("00:00:30", RunOnStartup = true)] TimerInfo timerInfo, TextWriter log)
        {
            // Processing code here
        }

注意,我试过让 web 作业有两种方法,但它似乎从未进入定时器方法,只有服务总线触发方法。

亲切的问候,

斯蒂芬

您当然可以在一个 WebJob 中同时使用这两种方法,这就是实现它的方法。如果您的 TimerTrigger 没有触发,我建议您确保 config.UseTimers() 在您的 Program.cs 文件中。如果您不调用 UseTimers 方法,则不会触发任何 TimerTrigger。