我正在学习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()
方法,我们如何做到这一点?
我期望结合集成和响应式的正确方法
当我了解多线程时,事情会变得更容易。