当前位置: 首页 > 知识库问答 >
问题:

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

商正浩
2023-03-14

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

共有1个答案

董同
2023-03-14

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

一般情况下:

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

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

 类似资料:
  • 我的Android应用程序允许用户从互联网下载zip文件。有人可以判断是否可以从应用程序本身安装zip文件?无法访问互联网。我一直在寻找机会来做这件事很长一段时间,并且已经不知所措了。 附言:谢谢回复,我开始明白了!我将我的zip文件添加到名称为“my.zip”的“原始”文件夹中,并添加了代码(如下),不幸的是手机上的文件安装没有发生,你能看到我的错误吗? 我在代码中添加了Toast并包含了Dow

  • Project Reactor是否可以在一个mono中等待一个事件/条件,而不需要使用每个mono的阻塞线程?使用,我可以完成这样的事情,但我不知道如何使用Project Reactor。 我的问题是我需要将请求与响应相关联。响应时间变化很大,有些甚至永远不会得到回复和超时。在客户端,每个请求阻塞线程不是问题,但由于这是一个服务器应用程序,我不想最终导致每个请求产生一个线程阻塞等待响应。 API如

  • 问题内容: 好的,因此我们正在尝试将3D散点图合并到NetBeans 7.0中的项目中,而我们选择测试的库之一就是Jzy3D。看起来它可以完成我们需要做的所有事情,但是不幸的是,它什么也没做。 我已经正确安装了JOGL,并对其进行了测试并发现它可以正常工作。然后,我包含了与演示中相同的依赖项。我也尝试过直接包括.jars。是的,胶原- rt.jar在库文件夹中。 编辑: 为了使JOGL工作,我们不

  • 问题内容: 随着iOS 7的引入,应用程序在想要录制音频时必须请求访问麦克风。 如何检查应用程序是否可以访问麦克风? 在iOS 8 SDK中,我可以使用枚举,但是如何在iOS 7中进行检查? 信息: 我不想请求权限,我只想检查应用程序是否可以访问麦克风。(例如位置访问权限): 问题答案: 在这种情况下,无法获取..的当前状态。他们已将枚举指定为AVAudioSessionRecordPermiss

  • 问题内容: 我想使用redis的pubsub传输一些消息,但不想使用阻止,例如以下代码: 最后一部分将被阻止。我只想检查给定频道中是否有数据,该如何完成?有没有类似的方法? 问题答案: 我认为那不可能。通道没有任何“当前数据”,您订阅了一个通道并开始接收该通道上其他客户端推送的消息,因此它是一个阻塞的API。另外,如果您查看pub / sub 的Redis Commands文档,将会更加清楚。

  • 我有一个Spring Boot应用程序,它使用IBMSpring Boot启动器连接到IBMMessageQueue服务: 我有一个组件类侦听队列,它有以下注释来启用/禁用连接到队列: 我的应用程序中还有以下属性。属性: 当我连接到ActiveMQ时,此注释用于禁用队列连接,但在将代码库更改为连接到IBM MQ时,连接似乎不受ConditionalUnproperty的影响,并且总是尝试连接。 是