提问者:小点点

可能是java。io。随机访问文件。readBytes阻塞调用在反应式应用程序中是否可以接受?在哪些情况下?


我们有一个使用Spring WebFlux的应用程序,它使用Project Reactor。我对应用程序运行了BlockHound评估,它报告了java。io。随机访问文件。readBytes在hibernate validator、orika mapper等库中阻止调用。hibernate validator从其ValidationMessages中读取错误消息。属性文件。此阻塞调用(仅从属性文件读取消息)对反应式应用程序的负面影响有多严重?是否可以忽略它,或者我们是否应该找到此验证的非阻塞解决方案?


共1个答案

匿名用户

不幸的是,这里没有快速的答案-这取决于,您必须查看RandomAccessFile的使用情况。readByte(),并判断是否可以接受。

一般情况下:

  • 如果它只是在启动时使用-没问题,因为这将发生在任何事件循环之外;
  • 如果它可能发生在事件循环中的某个时刻,那么这绝对是您需要解决的问题。

如果hibernate validator真正只使用它来读取属性文件,那么这可能属于第一类,因此不是问题。然而,我会对此保持谨慎,因为属性文件作为随机访问文件加载似乎有点奇怪,它们通常是按顺序读取的,所以我至少会仔细检查一下,以确保它是真正发生的。