【发布时间】:2013-12-30 15:50:00
【问题描述】:
我已经创建了一个计划任务系统。我正在使用具有半个核心的 Windows Azure 辅助角色。我从 SQL Azure 数据库中提取任务,我将其排队和出列。 任务可以相互独立运行。我估计每个工作角色可以在一个小时内执行三十个任务。随着我的解决方案的增长,我担心我必须为每 30 个新客户添加一个新的工人角色。如果我有超过一千个客户,我将拥有大约 35 个工人角色项目。
工人角色是否是我的业务需求的错误解决方案?
每个辅助角色项目的代码都是相同的。有没有一种方法可以在不添加其他项目的情况下执行以下代码以获得更多工作者角色?
我尝试了并行任务库,但是我的代码无法正常工作。在极少数情况下,客户的订单最终会出现在错误的帐户中;用户名和密码被越过。即使是并行任务,任务的数量还是会有限制?
这是我的代码:
public class WorkerRole : RoleEntryPoint
{
string conString = ConfigurationManager.ConnectionStrings["XXX"].ConnectionString;
IJMATaskProvider m_TaskProvider;
public override void Run()
{
// This is a sample worker implementation. Replace with your logic.
//Trace.TraceInformation("CloudCartConnector.TaskRole entry point called", "Information");
while (true)
{
Thread.Sleep(30010);
ExecuteTasks();
Thread.Sleep(500010);
Trace.TraceInformation("Working", "Information");
}
}
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
m_TaskProvider = JMATaskFactory.Get(conString, CloudCartConnectorLogProvider.Instance);
return base.OnStart();
}
void PerformTask(JMATask task)
{
//Update database
}
public string ExecuteTasks()
{
try
{
List<JMATask> tasks = m_TaskProvider.GetAllTasks();
foreach (JMATask task in tasks)
{
PerformTask(task);
}
return "OK";
}
catch (Exception ex)
{
}
}
}
【问题讨论】:
标签: c# multithreading azure