我有一种情况,我必须在 Web API 方法中接收请求,将这些请求排队,然后将批量发送到数据库(Solr 实例)。
我不太确定如何维护来自多个来源的一批请求。现在我正在将每个请求数据以 json 格式写入磁盘上的文件,稍后我将有一个 windows 服务,通过文件夹读取所有文件,更新数据库并删除这些文件。
这是我在我的 Web API 中所做的
public void Post(LogEntry value)
{
value.EventID = Guid.NewGuid();
value.ServerTime = DateTime.UtcNow;
string json = JsonConvert.SerializeObject(value);
using(StreamWriter sw = new StreamWriter(value.EventID.ToString()))
{
sw.Write(json);
}
}
(这里EventID
是 GUID)
这个过程看起来不对,一定有办法维护一个请求队列,但我不太确定如何在多个请求期间维护一个队列。
我这样做的原因是,在 solr 实例中批量插入比通过 SolrNet 插入单个记录要快。我期望在 Web API 上每秒至少收到 100 个请求。我想创建一批 1000 个请求并每 10 秒更新一次 solr 实例。请不要认为我需要代码,只需要知道我应该采用什么策略来维护请求/状态队列。