c# - 处理有限数量的请求,同时缓冲其余请求
问题描述
我有一个要求,我必须从流数据中进行大量的数据库调用。为了防止游泳池前托管,我不得不限制通话。经过一番研究,我想出了一个使用BlockingCollection
. 我在哪里将数据推送到BlockingCollection
对象并使用GetConsumingEnumerable()
我一直在收听消息
这是如何完成的
public BlockingCollection<ModelType> dataValues = new BlockingCollection<ModelType>(boundedCapacity: _poolLimit);
public void StartBlockingCollectionListen()
{
foreach (var data in dataValues.GetConsumingEnumerable())
{
if (dataValues != null)
{
// send out for execution
}
}
}
我在应用程序启动时调用了 StartBlockingCollectionListen 函数,以便在应用程序启动时开始侦听。
问题:
这样做可以吗?[大量数据传入时这会影响性能]
有没有其他方法可以实现以下要求
一个。当数据到来时将其放入队列中
湾。检查是否有更多请求并行运行[我有这个]
C。如果是,则将其添加到队列中
d。否则从队列中取出第一项并处理。[应该处理队列中的所有数据。]
我希望有一些方法,比如 Observable concurrentqueue。但我没有得到任何关于这些的信息。
任何帮助将不胜感激。谢谢
解决方案
推荐阅读
- elasticsearch - 如何在 Elastic Search 动态模板中做条件字段?
- azure - Azure IoT Edge 对设备孪生中的 JSON 数组的支持
- language-server-protocol - 我无法为 javascript 和 html 激活 NVIM 的内置 LSP
- bash - Dockerfile - Multiple processes - How to introspect GraphQL schema?
- macos - 如何使用 Homebrew 在我的 Mac 上恢复到 Python3.8?
- javascript - 可以在 if 语句中嵌入 html 吗?
- python - 如何使用 matplotlib 保存图像文件。方法 savefig 不起作用
- python - 在不使用日期时间的情况下将日期转换为一年中的某一天
- .net - 无法在 Internet Information Services V 8.5 中使用 https 设置
- python - 无法使用 twitter bot 回复推文