【发布时间】:2015-03-19 15:19:46
【问题描述】:
在我的 WebApi 控制器中,我有以下(伪)代码接收来自Instagrams real-time API 的更新通知:
[HttpPost]
public void Post(InstagramUpdate instagramUpdate)
{
var subscriptionId = instagramUpdate.SubscriptionId;
var lastUpdate = GetLastUpdate(subscriptionId);
// To avoid breaking my Instagram request limit, do not fetch new images too often.
if (lastUpdate.AddSeconds(5) < DateTime.UtcNow)
{
// More than 5 seconds ago since last update for this subscription. Get new images
GetNewImagesFromInstagram(subscriptionId);
UpdateLastUpdate(subscriptionId, DateTime.UtcNow);
}
}
如果我几乎同时收到同一订阅的两个更新通知,这将不会很好,因为 lastUpdate 直到处理第一个请求之后才会更新。
解决这个问题的最佳方法是什么?我正在考虑使用某种缓存,但我不确定如何。这类事情有一些最佳实践吗?我猜这是一个常见的问题:“收到通知,如果最近没有做某事,就做一些事情......”
【问题讨论】:
-
lastUpdate 是否包含某种 id,可用于检查是否已收到该更新?如果是这样,请将其放入静态变量中,并在收到更新时始终对其进行检查。
标签: c# asp.net-mvc asp.net-web-api instagram