You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus Mutiny中Java Streams peek()的等效调试方法是什么?

在Quarkus Uni流中实现类似Java Streams peek的调试方法

在Mutiny(Quarkus响应式API依赖的框架)里,你可以用invoke()方法实现Java Streams中peek()的功能——它能在不修改流中值的前提下,执行打印这类副作用操作,完美适配你的调试需求。

修改后的代码示例:

public Uni<TenantDraft> getTenantById(@PathParam("tenantKey") String tenantKey) {
    return tenantService.findByTenantKey(tenantKey)
            // 打印查询返回的Tenant对象
            .invoke(tenant -> System.out.println("查询到的Tenant: " + tenant))
            .onItem().ifNotNull().transform(TenantMapper.INSTANCE::tenantToTenantDraft)
            // 打印转换后的TenantDraft对象
            .invoke(draft -> System.out.println("转换后的TenantDraft: " + draft))
            .onItem().ifNull().failWith(ForbiddenException::new);
}

关键说明:

  • invoke()接收消费者函数,仅执行副作用操作,不会改变流中传递的对象,完全契合调试时查看值的场景。
  • 若需要调试异常情况,可结合onFailure().invoke()打印异常信息,比如:
    .onFailure().invoke(throwable -> System.err.println("出现异常: " + throwable.getMessage()))
    
  • 避免使用await().indefinitely(),它会阻塞响应式流的异步执行逻辑,容易引发线程异常,而invoke()是异步执行的,不会破坏响应式模型。

内容的提问来源于stack exchange,提问作者Jude Niroshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:51:04