使用 Azure WebJobs/Azure Functions 在服务队列上安排消息?

chi*_*786 4 c# azure azure-webjobs azure-functions

我们有一个云服务项目并设置了一个辅助角色。在我们的工作者角色中,我们在特定时间执行任务,并在特定时间将消息放入服务队列。

如果我们有多个工作角色启动并运行,消息会被多次安排,并且我们必须设置阻塞以确保一次只有一个工作角色正在执行任务,则会出现问题。

相反,我想做的是使用 Azure WebJobs 或 Azure Functions。并让 Azure WebJob/Functions 安排消息,辅助角色可以在特定时间读取消息并执行它。

想知道此方案的最佳实践是什么,我如何利用 Azure Webjobs 或 Function 来执行此操作?有没有我可以查看的示例或资源,因为 Microsoft 提供的资源不是很清楚。

Nir*_*ski 5

如果我理解正确的话,您的场景是: 1. 作业在某个时间醒来并将一堆消息放入队列 2. 从队列中提取并处理消息 3 。您遇到的问题是,当您有多个工作角色时,调度程序会运行不止一次。如果是这种情况,那么设置一个在调度程序上运行的 Azure 函数将是微不足道的,将消息放在队列中,然后让另一个 Azure 函数接收消息。如果您使用 Azure Functions 动态托管计划,您将获得队列侦听器函数的自动缩放。Azure 管理门户中的 Azure Functions UX 具有用于此方案的模板,您可以使用 C# 或 node.js

  • 动态托管计划中的功能是按执行付费,并提供相当慷慨的免费赠款,因此它们可能是最具成本效益的... WebJobs \ WebRole 即使它们没有运行也会花费您,但是,如果您已经拥有其他资产应用服务(Azure Web 应用)或云服务,您也可以利用它们来运行您的队列处理(假设这不会减慢其他应用的速度)。 (2认同)