我有 2 个微服务
从服务 A 通过对文件进行操作来生成文件
从服务 B 开始使用文件
顺序是
第一步:访问服务B的API /getFile
第 2 步:在处理服务 B 的 API 时,它会调用 API 来在服务 A 中生成文件
第3步:文件生成后,我们检查文件在文件系统(即服务A和B的共享文件系统)上是否可用
第 4 步:成功接收到来自服务 A 的响应后,服务 B 继续处理
在上面的场景中,如果我们在服务 A 中使用 file.exists() ,它将返回 true 但如果我们在服务 B 中使用它,它会返回 false
还检查了在收到服务 A 的响应后是否正在检查文件。
任何人都可以帮助我为什么这种行为会被复制吗?
要检查文件是否存在,请找到以下代码
服务B
File file = Paths.get(uri).toFile();
log.debug("isFile():" + file.isFile() + " exists():" + file.exists())
服务A
File file = new File(uri);
log.debug("isFile():" + file.isFile() + " exists():" + file.exists())
这可能是您共享文件系统中的问题。根据解决方案,可能需要一些时间才能将更改传播到所有节点和所有客户端。
例如,NFS 有一个文件属性缓存。检查手册,了解它在您的情况下到底如何工作。
也许可以通过读取文件而不检查文件是否存在来解决。