LogicApps Web API使其成为异步

时间:2017-03-02 19:05:12

标签: asynchronous asp.net-web-api azure-logic-apps

我必须编写一个Web API来将数据插入到自定义的内部部署数据库中,然后调用LogicApps的存储过程来使用。当传递大量数据时,LogicApps会调用超时。所以我试图使用我在这里找到的解决方案: LogicAppsAsyncResponseSample

所以我基本上将所有代码放入doWork中:

foreach (var record in records)
{
  ...
  //Insert record
  cmd.ExecuteNonQuery();
}
...
//Call SP
cmd.ExecuteNonQuery();

runningTasks[id] = true;

我的问题是我应该在doWork中创建我的代码,异步吗?根据需要使用Await和ExecuteNonQueryAsync而不是ExecuteNonQuery并将AsynchronousProcessing添加到我的连接字符串中?

或者,我实际上也在考虑将其写成“Fire and Forget”。这意味着我将在我的API中启动一个线程来调用doWork,并在示例中立即返回OK而不是Accepted。然后我不需要存储线程状态或具有chekcStatus方法。这对我来说没问题,因为API可以在任何失败时发送警报。所提到的样本的唯一优势是我最终可以向LogicApps返回一些内容,表明成功与否,并在我的LogicApps日志中显示它(一个地方可以看到所有内容)。 “火与忘记”是一种合理的做法吗?

仅供参考:样本中对dowork的调用是:

new Thread(() => doWork(id)).Start();

0 个答案:

没有答案