没有函数和 运行 后台线程的 Azure Function App
Azure Function App with no function and Running background threads
是否可以 运行 没有任何功能的 Azure Function 应用程序,但 运行 宁线程将从 Azure 服务总线读取消息?
似乎线程没有从 ASB 读取消息。
更新
我的函数应用程序(没有函数)在本地运行,但在 Azure 上运行不了。
的形式销售
More than just event-driven serverless compute
event-driven 部分是这里的关键。函数应用程序中的实际函数是由计时器、服务总线上的消息或事件网格事件触发的代码。所有其他代码都应该支持完成这项工作。如果您的 Functions 应用程序没有任何功能,则您的代码没有任何入口点 运行.
两个主要说明:
- 感觉有点像是在滥用函数
- 为什么不使用 Service Bus triggers 而不是手动执行相同操作的线程?
看看这个例子,摘自 Azure Service Bus bindings for Azure Functions - Trigger - C# example:
[FunctionName("ServiceBusQueueTriggerCSharp")]
public static void Run(
[ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "ServiceBusConnection")]
string myQueueItem,
Int32 deliveryCount,
DateTime enqueuedTimeUtc,
string messageId,
ILogger log)
{
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
log.LogInformation($"DeliveryCount={deliveryCount}");
log.LogInformation($"MessageId={messageId}");
}
This example shows a C# function that reads message metadata and logs a Service Bus queue message.
您的 Function 应用程序在本地工作但在 Azure 中不工作的可能原因是消费计划的工作方式。在 Azure 中的基础结构检测到我们官方支持的触发器之一指示您的函数应用程序需要启动之前,函数应用程序将不会 运行。只有在那时才会创建您的应用程序的实例。这就是我们实现廉价定价的方式,因为您的代码仅在需要时 运行。
正如其他人在评论中所述并添加到 rickvdbosch 的出色答案中,没有任何实际 Azure Functions 运行 的 Azure Functions 应用程序没有多大意义。如果 Azure Functions 中没有任何代码 运行,您就不会使用 Azure Functions 的任何功能。如果您真的想始终实施后台线程 运行,专用的 Azure Web 应用程序将是正确的方法。
话虽如此,按照 rickvdbosch 的建议使用服务总线触发器可以处理您可能必须在后台线程中编写的大部分样板文件,并使您能够使用 Azure Functions Consumption Plan,以及所有这些带来的定价优势。
是否可以 运行 没有任何功能的 Azure Function 应用程序,但 运行 宁线程将从 Azure 服务总线读取消息?
似乎线程没有从 ASB 读取消息。
更新
我的函数应用程序(没有函数)在本地运行,但在 Azure 上运行不了。
More than just event-driven serverless compute
event-driven 部分是这里的关键。函数应用程序中的实际函数是由计时器、服务总线上的消息或事件网格事件触发的代码。所有其他代码都应该支持完成这项工作。如果您的 Functions 应用程序没有任何功能,则您的代码没有任何入口点 运行.
两个主要说明:
- 感觉有点像是在滥用函数
- 为什么不使用 Service Bus triggers 而不是手动执行相同操作的线程?
看看这个例子,摘自 Azure Service Bus bindings for Azure Functions - Trigger - C# example:
[FunctionName("ServiceBusQueueTriggerCSharp")]
public static void Run(
[ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "ServiceBusConnection")]
string myQueueItem,
Int32 deliveryCount,
DateTime enqueuedTimeUtc,
string messageId,
ILogger log)
{
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
log.LogInformation($"DeliveryCount={deliveryCount}");
log.LogInformation($"MessageId={messageId}");
}
This example shows a C# function that reads message metadata and logs a Service Bus queue message.
您的 Function 应用程序在本地工作但在 Azure 中不工作的可能原因是消费计划的工作方式。在 Azure 中的基础结构检测到我们官方支持的触发器之一指示您的函数应用程序需要启动之前,函数应用程序将不会 运行。只有在那时才会创建您的应用程序的实例。这就是我们实现廉价定价的方式,因为您的代码仅在需要时 运行。
正如其他人在评论中所述并添加到 rickvdbosch 的出色答案中,没有任何实际 Azure Functions 运行 的 Azure Functions 应用程序没有多大意义。如果 Azure Functions 中没有任何代码 运行,您就不会使用 Azure Functions 的任何功能。如果您真的想始终实施后台线程 运行,专用的 Azure Web 应用程序将是正确的方法。
话虽如此,按照 rickvdbosch 的建议使用服务总线触发器可以处理您可能必须在后台线程中编写的大部分样板文件,并使您能够使用 Azure Functions Consumption Plan,以及所有这些带来的定价优势。