У меня есть одна конечная точка API, которая должна как можно скорее вернуться к вызывающему. В настоящее время он возвращает менее 1 мс. Если, однако, я записываю некоторые данные в базу данных, теперь он приближается к 10 мс.Обработка после завершения запроса
Как вы подходите к завершению запроса и затем выполняете какую-либо обработку после завершения запроса? Я попытался с Response.Body.Flush(), но это не завершает запрос, и он все еще занимает полные 10 мс. Похоже, что он отправляет/очищает полезную нагрузку, но запрос все еще не завершается до тех пор, пока не будет завершен метод действия.
Будет ли это работать для ведения журнала в промежуточном программном обеспечении?
EDIT:
Один из способов, который я нашел, чтобы использовать FluentScheduler так:
JobManager.Initialize(new Registry());
JobManager.Start();
в Program.cs перед тем host.Run(), а затем планировать непосредственное задание от действий, как это :
JobManager.AddJob(() =>
{
// do something...
}, (s) => s.ToRunOnceIn(1).Seconds());
Это немного к широкому, не зная, используете ли вы брокеров/автобусов сообщений или видите конкретный код. Возможно, опубликуйте какой-то код того, что вы используете. Самый простой способ - использовать шину сообщений и просто запустить событие и позже зарегистрировать его. – Tseng
Я не использую какую-либо систему очередей. Я надеюсь, что в этом есть что-то, что можно поддержать. – pbz
Response.OnCompleted близок, но соединение остается открытым, когда оно работает. – pbz