我有以下配置,并且我在Spring集成Java DSL服务执行器(.handle)应该使用bean
中使用了以下样式
@Bean
public IntegrationFlow flow(PollerMetada poller, FileReadingMessageSource source){
return IntegrationFlows.from(source, e->e.poller(poller)
.handle(this::mainHandle)
.channel("somechannel")
.get();
}
public FileRequest mainHandle(Message<?> message){
...
return request;
}
但是我收到错误,我的处理程序是单向 MessageHandler,如何使其不是单向以便我可以配置输出通道?谢谢你
您使用
.handle(this::mainHandle)
API。这完全符合 MessageHandler
合约:void handleMessage(Message<?> message)
。
你的方法是这样的mainHandle(Message<?> message)
。因此,方法的返回类型将被忽略,因为映射到 MessageHandler
的方法引用对返回类型一无所知 - 只是 void
。
要使其与返回类型一起使用,您需要使用不同的 API:
public <P> B handle(GenericHandler<P> handler) {
合同在哪里:
Object handle(P payload, MessageHeaders headers);
要将其与您的
mainHandle()
合约相匹配,必须像这样使用:
.handle(Message.class, (p, h) -> mainHandle(p))
或者您可以使用基于方法名称的 API:
.handle(this, "mainHandle")