如何避免 Spring Integration Flow 中的响应式服务阻塞?

问题描述 投票:0回答:1

我正在学习Java集成,当我从反应式服务获取数据并在

IntegrationFlow
中使用它时遇到问题,我的代码在这里,是我的想法的简单演示:

@Autowired
    private MockReactiveService mockReactiveService; // return Mono

@Bean
    public IntegrationFlow webFluxFlow(){
        return IntegrationFlow.from(WebFlux
                        .inboundGateway("/demo")
                        .requestMapping(m -> m.methods(HttpMethod.POST))
                        .replyChannel("replyChannel")
                )
                .enrich(enricherSpec -> enricherSpec.headerFunction(IntegrationMessageHeaderAccessor.PRIORITY, message -> {
                    String priorityMessageType = mockReactiveService
                            .getMonoWrapper(message.getPayload())
                            .map(myModel -> myModel.getMessageType())
                            .block();
                    return message.getHeaders().get("MessageType",String.class).equals(priorityMessageType)?1:0;
                }))
                .channel(c -> c.priority())
                .channel("nextChannel")
                .get();
    }

如果不使用

block()
方法,我们如何做到这一点?

我期望结合集成和响应式的正确方法

spring reactive-programming integration
1个回答
0
投票

当我了解多线程时,事情会变得更容易。

© www.soinside.com 2019 - 2024. All rights reserved.