【发布时间】:2018-09-13 10:31:26
【问题描述】:
我们目前每天都会收到许多来自第三方公司的 webhook。
webhook 数据包含开始日期和结束日期以及用户 ID。当这些 webhook 进入时,我首先检查以确保数据库中不存在该记录。例如
var CheckForDuplicateRefreshWebhook = await db.DataRefreshes.SingleOrDefaultAsync(x => x.startdate = startdate && x.enddate == enddate && x.userid == userid);
if(CheckForDuplicateRefreshWebhook == null)
{
//Insert Record
} else {
//Dont Insert Record
}
现在我遇到的问题是 2 个精确的 webhook 相隔几毫秒。这种情况很少发生,但仍在将两个 webhook 数据插入到数据库中。
我认为第一个 webhook 进来了,而对现有记录的检查仍在执行,第二个确切的 webhook 也进来了,而检查记录是否在数据库中存在的代码尚未完成正在执行,并且正在添加两个确切的 webhook。
我想知道是否有办法避免这种情况?我一直在寻找如何等待任务完成后再继续,但仍然没有成功。
因此,总体而言,重复的 webhook 进入速度很快,以至于在插入第二个 webhook 之前第一个插入尚未完成。
基于 webhook 何时进入,我们还执行另一组函数,这些函数还将另一组记录插入另一个表,并在另一个表中创建重复项。
谢谢
【问题讨论】:
标签: c# entity-framework duplicates webhooks