我们有一个使用 Spring WebFlux 的应用程序,它使用 Project Reactor。我为应用程序运行了 BlockHound 评估,它报告了 java.io.RandomAccessFile.readBytes 在诸如 hibernate-validator、orika 映射器之类的库中阻塞调用。hibernate-validator 从其 ValidationMessages.properties 文件中读取错误消息。这个阻塞调用(只是从属性文件中读取消息)对响应式应用程序的负面影响有多严重?是否可以忽略它,或者我们是否应该为此验证找到非阻塞解决方案?
1 回答
0
不幸的是,这里没有快速的答案 - 这取决于,您必须查看RandomAccessFile.readByte()
每个库中的使用情况,并确定它是否可以接受。
一般来说:
- 如果它只是在启动时使用 - 没问题,因为这将发生在任何事件循环之外;
- 如果它可能在事件循环中的某个时刻发生,那么这绝对是您需要解决的问题。
如果hibernate-validator
真的只是使用它来读取属性文件,那么这可能属于第一类,所以不是问题。但是,我会对此保持谨慎,因为将属性文件加载为 似乎有点奇怪RandomAccessFile
,它们通常是按顺序读取的 - 所以我至少会仔细检查以确保它是真正发生的事情。
于 2021-11-27T02:08:09.500 回答