我有一个从特定位置读取文件并处理它的应用程序。现在我的要求是增加应用程序的实例数。如何确保每个实例不会选择相同的文件?有没有办法让每个实例从同一个文件位置选择不同的文件?请建议。
问问题
74 次
1 回答
0
取决于几件事:
您的应用程序是如何触发的?如果您使用的是 spring 批处理调度程序之类的东西,那么这会引起担忧,因为所有实例都会被触发并且多个实例可以获取相同的文件。因此,您需要在应用程序中设置一些逻辑来仅触发 1 个实例,例如在表中创建一个条目并在处理开始时锁定表,以便另一个触发器在找到可用表之前不会运行。确保仅针对一个实例更新和锁定表,以避免多个触发器。您可以通过其他几种方式进行管理。
如果您的应用程序是由其他进程触发的,那么 go-router 将在循环的基础上一次仅触发 1 个实例,但是如果进程需要一些时间并且另一个实例被触发,那么它可能会尝试获取同一个文件。因此,当您拿起文件进行处理时,您可以将文件移动到某个临时位置,这样另一个触发器将找不到相同的文件。一旦成功处理 - 它可以移动到“完成”文件夹..
文件多久上传到共享位置?如果它非常频繁,最好在应用实例触发后立即移动到唯一的临时文件夹中,并只保留未选择文件的暂存文件夹
于 2021-04-04T09:31:00.693 回答