前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webflux中操作符调试

webflux中操作符调试

作者头像
阿超
发布2023-11-14 10:45:07
1470
发布2023-11-14 10:45:07
举报
文章被收录于专栏:快乐阿超快乐阿超

生命不息,奋斗不止。——卡莱尔

分享一个小技巧,在webflux开发中,我们可以在主启动类上加这么一行代码:

代码语言:javascript
复制
Hooks.onOperatorDebug();

这行代码的用处是注册一个回调函数,可以打印操作符信息,举个例子:

代码语言:javascript
复制
import reactor.core.publisher.Flux;
import reactor.core.publisher.Hooks;

public class DebugExample {
    public static void main(String[] args) {
        Hooks.onOperatorDebug(); // 启用操作符调试

        Flux<Integer> flux = Flux.just(1, 2, 3, 4)
                .map(i -> i / 0); // 这里会触发除以零的异常

        flux.subscribe(
                value -> System.out.println("Received: " + value),
                error -> System.err.println("Error: " + error)
        );
    }
}

如果我们没有注册,则堆栈打印信息:

代码语言:javascript
复制
Received: 1
Received: 2
Received: 3
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at DebugExample.lambda$main$0(DebugExample.java:12)
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
	at reactor.core.publisher.FluxJust$WeakScalarSubscription.request(FluxJust.java:91)
	at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:155)
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:1266)
	at reactor.core.publisher.FluxMap.onSubscribe(FluxMap.java:59)
	at reactor.core.publisher.FluxJust.subscribe(FluxJust.java:68)
	at reactor.core.publisher.FluxMap.subscribe(FluxMap.java:44)
	at reactor.core.publisher.Flux.subscribe(Flux.java:9117)
	at reactor.core.publisher.Flux.subscribe(Flux.java:9091)
	at DebugExample.main(DebugExample.java:14)

注册以后:

代码语言:javascript
复制
Received: 1
Received: 2
Received: 3
Error: java.lang.ArithmeticException: / by zero
	at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
		| onSubscribe([Synchronous Fuseable] FluxMapFuseable.MapFuseableSubscriber)
		|   Flux.map(Map.java:95)
		|   Flux.map(Map.java:92)
		|   DebugExample.main(DebugExample.java:15)
		| onAssembly(FluxMapFuseable)
		|   Flux.map(Map.java:95)
		|   Flux.map(Map.java:92)
		|   DebugExample.main(DebugExample.java:15)
		| request(unbounded)
		at reactor.core.publisher.FluxOnAssembly.onAssembly(FluxOnAssembly.java:482)
		at reactor.core.publisher.FluxMapFuseable.subscribe(FluxMapFuseable.java:64)
		at reactor.core.publisher.Flux.subscribe(Flux.java:9065)
		at reactor.core.publisher.Flux.subscribe(Flux.java:9039)
		at DebugExample.main(DebugExample.java:14)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		Suppressed: java.lang.ArithmeticException: / by zero
			at reactor.core.publisher.Operators.onErrorDropped(Operators.java:197)
		at reactor.core.publisher.FluxOnAssembly.onAssembly(FluxOnAssembly.java:482)
		at reactor.core.publisher.FluxMapFuseable.subscribe(FluxMapFuseable.java:64)
		at reactor.core.publisher.Flux.subscribe(Flux.java:9065)
		at reactor.core.publisher.Flux.subscribe(Flux.java:9039)
		at DebugExample.main(DebugExample.java:14)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档