我想知道正常的java API调用(我的意思是没有I/O的方法)是否应该被线程化为“迷你阻塞调用”?是否可以像这样实现Reactive Streams(在返回Publisher之前调用方法):
public Mono<String> doSomething(Object anyObject){
validator.validate(anyObject); // it returns void so in this case it cannot be in filter
return Mono.just(anyObject)
.flatmap(service::process);
}
而不是(在流中调用它)
public Mono<String> doSomething(Object anyObject){
return Mono.just(anyObject)
.doOnNext(validator::validate)
.flatmap(service::process);
}
此验证器仅用于示例。这种方法是否有任何缺点,或者这些方法在返回语句之前应该总是包含在流中?
我想知道正常的java API调用(我的意思是没有I/O的方法)是否应该被线程化为“迷你阻塞调用”?
我不太清楚这里的迷你阻塞调用是什么意思——一个方法阻塞还是不阻塞。如果它不阻塞是因为它不需要(该方法不涉及任何IO或其他阻塞操作),那么它只是一个标准的同步操作。
在这种情况下,在可能的情况下,我喜欢遵守两个相关原则:
因此,我倾向于第二种方法,因为那里的一切显然都是反应性链的一部分,这使得代码更清晰地阅读恕我直言——你不会在反应性和非反应性代码之间来回切换。
然而,请记住,您将使用此方法作为更大的反应性链的一部分(最有可能是通过flatMap()
调用),如果可能的话,实际上我更喜欢另一种方法-即使用转换()
意味着您可以提供一个方法,该方法既接受Mono
作为其参数,又返回一个:
public Mono<String> doSomething(Mono<String> mono){
return mono
.doOnNext(validator::validate)
.flatmap(service::process);
}
这样一来,所有东西都会成为反应链的一部分,并具有避免使用Mono的额外优势。just()
。
我试图做一个非阻塞子进程调用,从我的main.py程序运行slave.py脚本。我需要通过args从main.pyslave.py一次,当它(slave.py)首次启动通过subprocess.call后,slave.py运行一段时间,然后退出。 还有我的奴隶剧本 现在是奴隶。py块主要。py从运行它的其余任务开始,我只需要一个slave。py独立于main。py,一旦我把args传递给它。这两个
最近,我使用回调结构实现了一个带有Quarkus/Multiny的反应式REST GETendpoint; 使用 Quarkus/Mutiny 将 MyRequestService 连接到 Reactive REST GET endpoint 完成后,我想知道如何通过调用阻止服务来解决这个问题; 我如何用quar kus/哗变从我的反应式REST GETendpoint调用阻塞服务
这是一个非阻塞的解决方案,但看起来并不那么优雅。它能以某种方式改进/简化吗?
我有一个quarkus应用程序,我正在尝试使用Restasured进行测试,但在测试时出现了以下错误: 如果我运行这个应用程序并使用postman手动测试,这似乎不会发生,所以这似乎是一个测试设置的问题。 我的测试如下: 控制器内部: 我的服务: 我的存储库: 我也尝试将完整的测试内容包装在
我只是想知道是否可以使用SocketChannel类(带有ByteBuffer)来模拟Java中常规Socket类的阻塞特性。我做了两个测试项目,一个模拟客户端,另一个模拟服务器: 客户代码: 服务器代码: 正如我在评论中所说,运行服务器然后客户端(按该顺序)的结果是不可预测的,因为有时第二个数字可能保持为4或变为6,而更改分别为-1或4(整数字节)。 至于服务器端,我知道我可以让它等待第二个so
我在Kafka·吉拉也描述了这个问题:https://issues.apache.org/jira/browse/KAFKA-13014 我们有多个实例和线程的Kafka流。 这个Kafka流消耗了很多话题。 其中一个主题分区一天内无法访问,主题保留时间为4小时。 解决问题后,Kafka流正试图从不再存在的偏移量中消费: Kafka消费群体描述: 我们可以看到KS正在等待的当前偏移量是 Kafka