【问题标题】:How should I organize my WebJob projects?我应该如何组织我的 WebJob 项目?
【发布时间】:2018-04-13 15:54:48
【问题描述】:
是否有关于何时应在 Visual Studio 中创建新的 Azure WebJob 项目的指导?我有很多操作,其中大部分是队列触发的,所以使用 SDK 是有意义的。但由于队列触发函数是 Main 中未引用的静态方法,我可以将所有内容放在同一个项目中。这有什么缺点吗?例如,它会限制可执行文件可以同时处理的消息数量吗?
【问题讨论】:
标签:
azure
azure-webjobs
azure-webjobssdk
【解决方案1】:
是否有关于何时应在 Visual Studio 中创建新的 Azure WebJob 项目的指导?
使用 Web 作业,您的后台进程可以作为任何命令行可执行文件或脚本(.ps1、bash、可执行文件等)执行。您可以在项目中连续或在特定时间(计划)执行一些代码。这可能非常方便。但我们通常将本地 webjobs 发布到 Azure。这一切都取决于您的个人要求。更多详情,请阅读article。
我可以将所有内容都放在同一个项目中。这有什么缺点吗?
Functions.cs 中的静态方法会被自动触发。您无需在 Main 类中添加引用。如果你把所有方法都放在项目中,我认为它可能会影响可读性和性能。当您运行 webjob 项目时,它将加载 Functions.cs 中的所有静态方法。但是,当您只想触发特定的静态方法时,您可以注释无用的方法。
它会例如限制可执行文件可以同时处理的消息数量吗?
默认情况下,SDK 一次获取一批 16 条队列消息,并执行并行处理它们的函数。更多详情,您可以在webjobs中学习Parallel execution。
并行执行
如果您有多个函数监听不同的队列,SDK 会在同时接收消息时并行调用它们。
当一个队列接收到多条消息时也是如此。默认情况下,SDK 一次获取一批 16 条队列消息,并执行并行处理它们的函数。