gpt4 book ai didi

azure - 在 Web 角色中使用 Webjobs SDK

转载 作者:行者123 更新时间:2023-12-01 23:50:57 24 4
gpt4 key购买 nike

我们有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com