升级上述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()
添加到每个特定的路由流中。