【问题标题】:Spawning and executing a Worker process in Azure在 Azure 中生成和执行 Worker 进程
【发布时间】:2012-04-24 13:51:23
【问题描述】:

谷歌在这方面真的让我失望了。我是 Azure 的新手,仅 .NET 中级

我有一个 Azure 解决方案正在运行,并且我已经在一个运行良好的 Web 角色中编写了一些代码。我现在想做的是将其中一些代码移动到 Azure Worker 中,它将由 Web 角色中的控制器函数初始化

我到底需要做什么才能让这件事在本地进行?我在 SLN 中创建了 Worker 项目。我只需要知道如何启动并运行它。

我认为我的部分问题是我假设这些工人的行为就像 Heroku 工人......是这样吗?因为我需要的是类似队列系统的东西(一个大队列中的一堆“工作任务”)。

我为教程找到的许多链接似乎都围绕着如何从 Web 角色实际初始化流程。

【问题讨论】:

    标签: c# .net asp.net-mvc azure azure-worker-roles


    【解决方案1】:

    Windows Azure 中的工作人员不是任务;它们是整个虚拟机。为了让您的生活更轻松,请记住这个小细节:Web 角色实例是运行 IIS 的 Windows Server 2008,而工作角色是相同的东西,但禁用了 IIS。

    当您将该辅助角色添加到您的项目时,您现在实际上有一组新的虚拟机正在运行(至少一个,具体取决于您设置的实例数)。这些 VM 有它们自己的 OnStart() 和 Run() 方法,您可以将代码放入其中,用于引导目的。

    如果您获取Windows Azure training kit,您将看到一些展示如何在各种角色实例之间进行通信的实验(一种常见的模式是使用 Windows Azure 队列)。 Guestbook 动手实验室(第一个实验室)有一个很好的后台进程示例。

    【讨论】:

      【解决方案2】:

      关于这方面的更多信息,因为我现在已经开始了..

      如果您来自 Heroku 背景,那么 Azure Worker 或多或少是 Rails 中您实际使用队列执行的函数。与 Heroku 排队操作不同,Azure Worker 只是无休止地运行并不断轮询要执行的新任务……因此 Run() 函数中的模板化 sleep(10000)。

      我发现让 Web 和 Worker 相互通信的最常规方式是通过 Azure ServiceBus 排队消息,目前尚未模拟,这意味着您需要一个正常运行的 Azure 帐户才能使这项工作正常工作,并且它会工作即使您在本地运行。您只需要访问互联网。

      ServiceBus 消息可以将整个对象传递给 Worker(只要 Worker proj 具有正确的依赖项),这很好。

      【讨论】:

      • 如果要使用模拟队列,可以使用 Azure 存储队列。
      【解决方案3】:

      我认为您只是在启动 azure 模拟器以及您的工作人员/网络角色时遇到了麻烦?只需将 azure 配置项目设置为启动项目并运行它。它会连同你的所有角色一起启动模拟器。

      【讨论】:

      • 因此工作者角色几乎与 Windows 服务相同。在本地启动它如上所述。您的问题标题+“我只需要知道如何启动并运行它。”可能有点误导。如果您更关心设置服务以使用作业,您可能想要使用存储客户端队列或类似于租赁和执行作业的东西。但是,您并没有真正提供有关您的需求的详细信息。不确定您想从哪里播种工作。
      猜你喜欢
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 2021-09-13
      • 2020-10-18
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多