基于计时器和服务总线上的新消息启动 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。
我想知道是否可以通过 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。