从Azure ServiceBus基础结构调用WebJob(不要连续运行WebJob)

问题描述 投票:1回答:1

我试图找出是否可以运行手动调度的webjob,并在消息到达servicebus队列时启动它。

因此,webjob不会连续运行,但仅在消息到达时才会运行。 (从而节省资源成本)

到目前为止我尝试了什么:

在Program.cs中

public static async Task Main()
    {
        JobHostConfiguration config = new JobHostConfiguration();

        _servicesBusConnectionString = AmbientConnectionStringProvider.Instance.GetConnectionString(ConnectionStringNames.ServiceBus);

        ServiceBusConfiguration serviceBusConfig = new ServiceBusConfiguration();

        config.UseServiceBus(serviceBusConfig);

        JobHost host = new JobHost(config);

        Console.WriteLine("Starting host");
        host.RunAndBlock();
    }

在Functions.cs中

public static void SBQueue2SBQueue([ServiceBusTrigger("createinvoice")] string start)
{
    Console.WriteLine("Receiving a message");
}

并运行run.cmd来启动进程

@echo off

dotnet CoreConsoleWebJob.dll

但是,在此解决方案中,我从azure控制台启动手动三角形webjob。 host.RunAndBlock();阻塞线程,但一段时间后进程失败,因为它已经空闲太久而webjob被关闭。

是否有可能天蓝色的服务总线基础设施调用该过程?或者是一个持续的webjob总是要走的路。

提前致谢 !

azure azureservicebus azure-webjobs
1个回答
2
投票

webjob在App Service Plan上运行。而且,由于您已经为应用服务计划付费,因此您无法节省任何没有连续运行webjob的资金。如果你正在考虑省钱,看看你在Azure Function上把它作为Consumption Plan

这确实可以省钱,因为你只需在功能运行时付款。并且触发器开箱即用,这很好:)

在使用“消耗”计划时,将根据传入事件的数量动态添加和删除Azure功能主机的实例。此无服务器计划会自动扩展,只有在您的功能运行时才需要为计算资源付费。

更多信息:Azure Service Bus bindings for Azure Functions

© www.soinside.com 2019 - 2024. All rights reserved.