我正在用 c# 开发一个应用程序,它处理来自缓冲区之类的队列的大量传入和传出数据。缓冲区需要是磁盘中的某种文件。数据将经常写入缓冲区(我说的是每 10 毫秒一次!)。每个写入的数据将在缓冲区中生成 1 条记录/行。
同一程序还将读取缓冲区(逐行)并处理缓冲数据。处理完一行/记录后,缓冲数据必须立即从缓冲文件中删除该行/记录,以防止在系统重启时重新处理缓冲数据。这种读取和删除也将以非常快的速度完成(比如每 10 毫秒左右)。
因此,它就像一个系统,可以写入、读取和清除已读取的内容。如果程序决定不处理缓冲数据,这个缓冲区可能会增长到 5GB (GIGABYTE),这会变得更加困难。
**所以我的问题是:我应该用什么样的方法来处理这个缓冲机制?我看过使用 SQlite 和简单的文本文件,但它们在处理大文件时可能效率低下,或者在处理并发插入、读取和删除时可能不太好。
无论如何,非常感谢任何建议。预先感谢您给出的任何答案!**
最佳答案
你听起来像是在描述消息队列
有 MSMQ、ZeroMQ、RabbitMQ 和其他几个。
这是 MSMQ 上的一堆链接:
- http://www.techrepublic.com/article/use-microsoft-message-queuing-in-c-for-inter-process-communication/6170794
- http://support.microsoft.com/KB/815811
- http://www.csharphelp.com/2007/06/msmq-your-reliable-asynchronous-message-processing/
- http://msdn.microsoft.com/en-us/library/ms973816.aspx
- http://www.c-sharpcorner.com/UploadFile/rajkpt/101262007012217AM/1.aspx
这里是 RabbitMQ
关于c# - 在 C# 中操作关键流缓冲区的最有效和可靠的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171556/