Я следую примеру https://github.com/microsoftgraph/msgraph-training-changenotifications/blob/master/demos/03-track-changes/Controllers/NotificationsController.cs, чтобы настроить уведомление для группы, измененной в Azure Dev Ops.
Приведенный выше пример GitHub использует Delta Query для получения последних изменений.
Я внес некоторые изменения в настоящий проект, описанный в приведенной выше ссылке, поэтому в моем коде есть конечная точка записи, как показано ниже,
public async Task<ActionResult<string>> Post([FromQuery]string validationToken = null)
{
// handle validation
if (!string.IsNullOrEmpty(validationToken))
{
return Ok(validationToken);
}
// handle notifications
using (StreamReader reader = new StreamReader(Request.Body))
{
string content = reader.ReadToEnd();
var notifications = JsonConvert.DeserializeObject<Notifications>(content);
foreach (var notification in notifications.Items)
{
Console.WriteLine($"Received notification: '{notification.Resource}', {notification.ResourceData?.Id}");
}
}
// use deltaquery to query for all updates and do my stuff(eg:create an entry in database)
await CheckForUpdates(_deltaLink);
//when my stuff is completed get the latest deltalink and update the _deltaLink which is a static object
var newDeltaLink = await _deltaQueryService.GetLatestDeltaLink();
_deltaLink = newDeltaLink;
return Ok();
}
Моя проблема, когда есть только одно изменение, это сообщение работает нормально, но когда есть несколько запросов на публикацию в течение нескольких миллисекунд разницы до достижения шага
var newDeltaLink = await _deltaQueryService.GetLatestDeltaLink();
второй запрос приходит и исполняется
await CheckForUpdates(_deltaLink);
дважды, поэтому я получаю повторяющиеся изменения группы, потому что deltaLink не обновляется после первого запроса.
Есть ли способ управления запросом на публикацию, чтобы получить второй запрос на публикацию после изменения дельта-ссылки?