关于数据同步超时的疑问,谢谢

发布于 2022-09-02 20:12:53 字数 475 浏览 13 评论 0

  • 需求如下

    • 用户A调用用户B的接口,往用户B的数据库里插入数据,同步过来的数据包括图片的URL,B用户要去A用户的服务器上下载图片

    • A用户的图片地址因为时间久远,人为删除,导致有些图片地址是访问不到的,这样会导致B用户在FileInputStream()读取文件的时候一直等,直到超时。

    • 由于B用户在读取不存在的图片地址时导致超时,A用户发现B迟迟没有响应,于是又发起一条上一次发送过的插入数据请求。

1.A用户开了多个线程将不同表里的数据插入到用户B
2.同步的文件时在局域网中,所以没有读取本地文件来的快,可以马上判断出文件是否存在

我的疑问是步骤3。 A用户是否应该等待B用户,直到B用户返回一个超时response后再进行操作,而不是擅自发起插入请求?

谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无尽的现实 2022-09-09 20:12:53

你好,请问在获取吧图片的时候是使用什么的方式呢?
第一: 使用 http 下载图片,既然图片被删了,http 应该就会立即告诉你 404 啊,不需要等待。
第二:使用文件系统的方式读取文件,既然在路径上图片删除了,你在 File f = new File(path); 后,f 对象有个方法判断文件是否存在的方法也能判断文件到底是否存在。
以上两种方法都不会造成 InputStream 的等待啊。我不知道你具体用的是那种方式读取文件的。

夏末染殇 2022-09-09 20:12:53

把B的超时时间设置的比A短一些就好了。

关于Stream超时的设置,你在读取Stream的时候,需要在While循环中read吧?在while之前打个时间戳,在循环过程中不停与当前相减,如果到期了就跳出去。

话说,找不到文件还会用到Stream?直接抛出去了吧?

File file = new File("\192.168.99.1/aa/bb/cc/201601/14/66666.jpg");
    if(file.exists()){
        ...
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文