【问题标题】:Is it possible to run a Change Feed Processor host as an Azure Web Job?是否可以将更改源处理器主机作为 Azure Web 作业运行?
【发布时间】:2020-01-05 00:27:58
【问题描述】:

我希望使用Change Feed Processor SDK 来监视对 Azure Cosmos DB 集合的更改,但是,我还没有看到关于主机是否可以作为 Azure Web 作业运行的明确文档。它可以?如果是,与将其作为控制台应用程序运行相比,是否存在任何已知问题或限制?

有很多关于使用 CFP SDK 的博客文章,但是,其中大多数都含糊地提到在 VM 上运行主机,并且没有一篇或任何将主机作为 azure web 作业运行的示例。

即使有可能,作为一个附带问题,如果这样的主机被部署为一个连续的 Web 作业,并且我将 Web 作业的“规模”设置选择为多实例,那么有哪些方法或建议可以使额外的实例使用 CFP SDK 要求的不同实例名称运行?

【问题讨论】:

  • 您是否有理由不简单地使用 Azure Functions?
  • @silent 我只是在评估所有方法。
  • 您好,这里有更新吗?我的回答对您有帮助吗?
  • 嗨,杰。是的,我已经将其标记为答案。就像我说的,我正在评估所有方法。因为我的特定用例需要重试处理文档,重试之间的等待时间为几分钟,所以我最终没有使用更改源,而是使用 Azure 存储队列和绑定到队列的函数。无论如何谢谢!在不久的将来肯定会和 CF 一起玩。

标签: azure architecture azure-cosmosdb azure-webjobs azure-cosmosdb-changefeed


【解决方案1】:

根据我的research,Cosmos db 触发器可以在 WebJob SDK 中实现。

static async Task Main()
{
    var builder = new HostBuilder();
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddCosmosDB(a =>
        {
            a.ConnectionMode = ConnectionMode.Gateway;
            a.Protocol = Protocol.Https;
            a.LeaseOptions.LeasePrefix = "prefix1";

        });
    });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

但似乎只能使用 Nuget for c# sdk,其他语言没有线索。所以,您可以参考Compare Functions and WebJobs 来平衡您的需求和成本。

【讨论】:

    【解决方案2】:

    Cosmos DB Trigger for Azure Functions 实际上是一个 WebJobs 扩展:https://github.com/Azure/azure-webjobs-sdk-extensions/tree/dev/src/WebJobs.Extensions.CosmosDB 它使用更改馈送处理器。

    函数通过 WebJob 技术运行。所以要回答这个问题,是的,您可以在 WebJobs 上运行 Change Feed Processor,只需确保:

    1. 您的应用服务设置为始终开启
    2. 如果您计划使用多个实例,请确保相应地设置 InstanceName 而不是静态/固定值。可能是标识 WebJob 实例的东西。

    【讨论】:

      猜你喜欢
      • 2019-03-27
      • 2014-09-12
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多