UNIX 哲学建议我们构建大量简单程序,这些程序只做一件事,并且使用文本流来完成。也就是说,标准输入/输出通道足以传递信息。
控制台程序不仅可以用管道连接在一起,还可以定向到文件。通过这样做,您基本上可以将消息(文件中的文本)排队以供以后处理。这似乎遵循与消息队列类似的模型,但没有那么复杂。
Richard P. Gabriel 认为 Unix 的一个关键优势是它体现了一种他称之为“更差即是更好”的设计理念,其中界面和实现的简单性比系统的任何其他属性(包括正确性、一致性和完整性)都重要。
从我的角度来看,文本流提供的通信渠道尽可能简单。这似乎符合“越差越好”的理念。因此,我们难道不能将控制台应用程序和写入文件系统的文件用作穷人的消息队列吗?如果可以,有没有人成功采用并喜欢这种方法?我只是想知道用文本流处理代替消息队列是否实用/可行。
答案1
许多邮件服务器使用磁盘上的文件作为队列。Exim 将每封电子邮件与另一个元数据文件一起保存在一个文件中。这样做的主要好处是防崩溃:队列在崩溃和重启后依然有效。
文件通常比使用像 0MQ 这样的消息队列系统要慢,并且存在效率问题(如何判断新消息何时进入队列?),但对于小型应用程序或需要持久队列的应用程序来说,它可以很好地工作。