首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java反应器中不适当的阻塞方法调用中使用objectmapper时收到警告

在java反应器中不适当的阻塞方法调用中使用objectmapper时收到警告
EN

Stack Overflow用户
提问于 2021-09-20 01:23:42
回答 2查看 551关注 0票数 1

我是reactor的新手,我试着从Iterable创建一个flux。然后我想使用对象映射器将我的对象转换成字符串。然后,ide会在代码new ObjectMapper().writeValueAsString(event)的这一部分中警告类似这样的消息。消息Inappropriate blocking method call。没有编译错误。你能给我一个解决方案吗?

代码语言:javascript
运行
复制
        Flux.fromIterable(Arrays.asList(new Event(), new Event()))
                .flatMap(event -> {
                    try {
                        return Mono.just(new ObjectMapper().writeValueAsString(event));
                    } catch (JsonProcessingException e) {
                        return Mono.error(e);
                    }
                })
                .subscribe(jsonStrin -> {
                    System.out.println("jsonStrin = " + jsonStrin);
                });
EN

Stack Overflow用户

回答已采纳

发布于 2021-09-20 03:27:39

我会给你一个答案,但我不太确定这是你想要的。看起来像是阻塞了线程。因此,如果你阻塞线程,你就不能获得反应式的确切好处。这就是IDE警告您的原因。您可以使用monoSink创建单声道。如下所示。

代码语言:javascript
运行
复制
        AtomicReference<ObjectMapper> objectMapper = new AtomicReference<>(new ObjectMapper());
        Flux.fromIterable(Arrays.asList(new Event(), new Event()))
                .flatMap(event -> {
                    return Mono.create(monoSink -> {
                        try {
                            monoSink.success(objectMapper .writeValueAsString(event));
                        } catch (JsonProcessingException e) {
                            monoSink.error(e);
                        }
                    });

                })
                .cast(String.class) // this cast will help you to axact data type that you want to continue the pipeline
                .subscribe(jsonString -> {
                    System.out.println("jsonString = " + jsonString);
                });

请尝试此方法,并检查错误是否会消失。

如果objectMapper像您一样是一个普通java对象,这并不重要。(如果你不改变)。这对你的情况不是必要的。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69248231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档