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

标签 azure azureservicebus azure-webjobs

我试图找出是否可以运行手动计划的 Web 作业,并在消息到达服务总线队列时启动它。

因此 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。主机.RunAndBlock();阻塞线程,但一段时间后进程失败,因为它闲置时间太长并且 webjob 被关闭。

该进程是否有可能由 azure servicebus 基础设施调用?或者,持续的网络工作始终是最佳选择。

提前致谢!

最佳答案

网络作业在应用服务计划上运行。由于您已经支付了应用服务计划的费用,因此如果不连续运行网络作业,您就无法节省任何资金。如果您想省钱,请看看将其运行为 Azure FunctionConsumption Plan上。

确实省钱,因为您只需在函数运行时付费。而且触发器开箱即用,这很好:)

When you're using a Consumption plan, instances of the Azure Functions host are dynamically added and removed based on the number of incoming events. This serverless plan scales automatically, and you're charged for compute resources only when your functions are running.

更多信息请点击:Azure Service Bus bindings for Azure Functions

关于azure - 从 Azure ServiceBus 基础结构调用 WebJob(不要连续运行 WebJob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151168/

相关文章:

Azure 容器级访问

azure - 从回收站清空 Azure Active Directory 应用程序

具有多个监听器的 azure 服务总线队列/具有队列的竞争消费者

Azure WebJob 部署不断失败

html - 使用 IE 从不同主机获取时的 CSS 图像路径

c# - Azure 移动服务和 Asp.net 身份架构

c# - 服务总线消息未正确处理,出现异常,但仍未进入死信状态?

c# - Azure ServiceBus 消息序列化/反序列化

visual-studio - 指定计划的 Azure WebJob 分配到的作业集合

Azure WebJob 不传递参数