2016-12-15 3 views
0

저는 ASP.NET 웹 API와 웹 개발에 대해 처음 보았습니다.웹 API의 대기열에서 처리

데이터베이스에 새 항목을 추가하는 POST 메서드가 있습니다.

[HttpPost] 
public IHttpActionResult Post([FromBody] Item item) 
{ 
    try 
    { 
     // ADD ITEM TO DATABASE 
    } 
    catch 
    { 
     return BadRequest("ERROR"); 
    } 

} 

내 문제는 데이터베이스에 항목을 추가하기 전에 일 처리가 많이 있다는 것입니다 (예 : 다른 전화로는, 외부 API 등) 약간의 시간이 걸립니다. 현재 요청이 처리되는 동안 다른 요청이 들어 오면 API를 보류하고 싶지 않습니다.

내가하고 싶은 것은 일부 큐에 처리 할 항목을 추가하고 백그라운드에서 실행중인 백그라운드에서 실행중인 항목을 큐에서 꺼내어 처리하는 것입니다.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

+0

현재 요청이 처리되는 동안 다른 요청이 오면 당신은'나는 API가 개최되고 싶지 않아 *에 대한 async'와'await'을 사용할 수 있습니다 * –

답변

3

응용 프로그램이 백그라운드 프로세스를 처리하기 시작할 때 스레드를 쉽게 만들 수 있습니다. 대기열을 만들고 항목을 밀어 넣기 만하면됩니다. 그러나 Hangfire를 사용하는 것이 좋습니다. 사용하기 매우 편리합니다. 각 API 호출에 대해 Hangfire 작업을 만들어야합니다. Hangfire가 당신을 위해 그들을 실행할 것입니다. http://hangfire.io/

var jobId = BackgroundJob.Enqueue(
    () => Console.WriteLine("Fire-and-forget!"));