Spring 集成和 DSL 升级 - 单向'MessageHandler',不适合配置"输出通道"错误



升级上述jar文件后,我不断遇到以下问题:

org.springframework.beans.factory.BeanCreationException: "当前组件" (org.springframework.integration.router.MethodInvokingRouter@5ddcc487) 是单向"消息处理程序",不适合配置 "输出通道"。这是集成流程的结束。 在 org.springframework.integration.dsl.IntegrationFlowDefinition.registerOutputChannelIfCan(IntegrationFlowDefinition.java:3053) 在 org.springframework.integration.dsl.IntegrationFlowDefinition.register(IntegrationFlowDefinition.java:2994) 在 org.springframework.integration.dsl.IntegrationFlowDefinition.handle(IntegrationFlowDefinition.java:1167) 在 org.springframework.integration.dsl.IntegrationFlowDefinition.handle(IntegrationFlowDefinition.java:987) 在 org.springframework.integration.dsl.IntegrationFlowDefinition.handle(IntegrationFlowDefinition.java:964) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

代码片段:

public IntegrationFlow inBoundFlow(ConnectionFactory mqConnection)
throws JMSException {
return IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(mqConnection)
.configureListenerContainer(listenerContainer)
.destination(mqProperties.getQueue().getRequest())
.errorChannel(ErrorChannel())
.setHeaderMapper(new DefaultJmsHeaderMapper()))
.filter(filterMessage, "filterMessage", m -> m.discardChannel(DiscardChannel()))
.route(mqMessageRouter, "messageRouter")
.handle(errorChannel, "handleError")
.get();
}

@Named
public class MQErrorMessageChannel {
@ServiceActivator(inputChannel = MQ_ERROR_MESSAGE_INPUT_CHANNEL, outputChannel = MQ_ERROR_MESSAGE_OUTPUT_CHANNEL)
public Message<String> handleError(Throwable t) {
//Do Something....
}
return null;
}
}

有什么指示吗?

> 这种形式的方法调用中的.route(mqMessageRouter, "messageRouter")完全是单向的,您不能在流中指向之后的任何内容。

没有严格的决定路由器之后的下一个通道,因此我们无法从那里继续流。

只需将您的流分成几个,然后将该.handle()添加到每个特定的路由流中。

相关内容

  • 没有找到相关文章