0

我有一个可执行文件,需要在命令到达时处理数据库中的记录。现在,我正在通过 TCP 交换发出命令,但我不太喜欢它,因为 a) 会话之间的队列不持久 b) TCP 端口可能被锁定

我的想法是创建一个文件夹并在其中放置名称与我要发出的命令匹配的文件

像:

1.23045.-1.1
2.999.-1.1

然后,在处理完命令后,该文件将被删除或移动到 Errors 文件夹。

这是可行的还是这种方法存在一些不可避免的问题?

PS 该进程将在Linux系统上使用,因此防病毒问题是不可能的。

4

1 回答 1

1

是的,有几个。

首先,存在与使用文件系统相关的所有问题。防病毒程序就是其中之一(尽管我不明白为什么它不适用于 Linux - 没有删除锁?)。磁盘空间、文件和目录计数最大值是其他的。然后,打开文件限制和权限...

第二,比赛条件。如果有多个消费者,他们中的多个可能会在第一个消费者移除命令之前看到并开始处理该命令。

还有将命令转换为文件名的问题,反之亦然,并且为需要多次发出的单个命令提供不同的名称。(虽然这些是编程问题,而不是设计问题;它们只会让人烦恼。)

这些都可能不适用于您或您非常关心,在这种情况下,我说:去做吧。看看我们错过了现实生活会想出的东西。

不过,对于任何接近“严重”的事情,我可能会使用MQ服务器。

于 2012-09-02T15:59:07.083 回答