检测 micronaut netty 中的非阻塞线程

问题描述

在我的 Micronauts 应用程序中,在我的阻塞代码中,我想检测我是否不小心在非阻塞事件循环线程上工作。

我正在考虑使用 reactor.core.scheduler.Schedulers#isInNonBlockingThread 但 Netty 线程没有实现预期的接口。

有没有办法在 Micronauts with Netty 中实现这一点?

解决方法

BlockHound 是您要查找的内容:https://github.com/reactor/BlockHound

它是一个 java 代理,用于检查已识别的非阻塞线程中的阻塞代码。

Netty 与其 SPI 集成(请参阅此 PR),因此您需要做的就是在测试中安装它(或使用 junit 平台支持)。