azure - 在 Web 角色中使用 Webjobs SDK

标签 azure azure-web-roles azureservicebus azure-webjobssdk

我们有一个 Azure Web 角色,需要监视服务总线队列以响应早期请求(然后通过 SignalR 传输到客户端)。

首先我们想在WebRole.OnStart()中使用消息泵(QueueClient.OnMessage)。然而,我们已经变得非常喜欢 WebJobs SDK,特别是它如何将程序员从一些较低级别的实现和仪表板中解放出来。

出于各种原因,我们希望保留 Web 角色而不是切换到网站。那么问题来了:如何在Azure Web Role中使用WebJobs SDK?在一个小实验中,我们在 WebRole.cs 中调整了 Web Role 的 OnStart(),如下所示:

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        JobHostConfiguration config = new JobHostConfiguration()
        {
            ServiceBusConnectionString = "...", 
            StorageConnectionString = "...",
            DashboardConnectionString = "..."
        };

        JobHost host = new JobHost(config);
        host.RunAndBlock();

        return base.OnStart();
    }

    public static void ProcessQueueMessage([ServiceBusTrigger("MyQueue")] string inputText)
    {
        Trace.WriteLine(inputText);
    }
}

这似乎工作正常,但我们很难评估它对 Web 角色的影响。会有后果吗?也许是为了扩展 Web 角色?

谢谢。

最佳答案

WebJobs SDK 在 WebRole 中应该可以正常工作。

我对您的实现有一个建议:不要阻止 OnStart 方法。使用 Start/StartAsync,而不是调用 RunAndBlock。这不会阻止该方法,并将为作业主机创建一个单独的线程。

可能看起来像(不确定是否可以编译):

public class WebRole : RoleEntryPoint
{
   private JobHost host;

   public override bool OnStart()
   {
       JobHostConfiguration config = new JobHostConfiguration()
       {
           ServiceBusConnectionString = "...", 
           StorageConnectionString = "...",
           DashboardConnectionString = "..."
       };

       host = new JobHost(config);
       host.Start();

       return base.OnStart();
   }

   // Not sure if this is the signature of OnStop
   // or even if this method is called this way
   public override bool OnStop()
   {
       host.Stop();
       return base.OnStop();   
   }

   public static void ProcessQueueMessage([ServiceBusTrigger("MyQueue")] string inputText)
   {
       Trace.WriteLine(inputText);
   }

}

关于azure - 在 Web 角色中使用 Webjobs SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549568/

相关文章:

c# - 使用 Azure Read/OCR API 从 PDF 中提取复选框数据

azure - 如何在 Windows Azure(操作系统或网站)中配置完美前向保密

.net - 错误请求 - 无效 URL

azure - CosmosDB 在读取时从外部 API 返回数据

Azure Devops + JMeter - 始终生成 html 报告?

azure - 无法在我的开发计算机上运行 azure 网站

azure - 我们如何使用事件网格和服务总线改进我们的架构?

azure - 如何从多个azure应用程序服务收集结果并推送到主题

c# - Azure 服务总线订阅指标

azure - 是否可以通过其 API 使用 Azure AD B2C 身份验证?