我正在尝试为流配置实现一些测试。我将JMS入站通道适配器作为流和出站文件通道适配器(带有附加的ExpressionEvaluatingRequestHandlerAdvice)的入口点作为最后一个端点。
以下是示例代码:
@Bean
public IntegrationFlow fileProcessingFlow() {
DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
dmlc.setConnectionFactory(connectionFactory);
dmlc.setDestination(jmsQueue);
return IntegrationFlows.from(Jms.messageDrivenChannelAdapter(dmlc))
.<String, File>transform(p -> new File(p))
.handle(headerEnricherService)
.<Boolean>route("T(SomeEnum).INVALID.equals(headers['headerName'])", mapping -> mapping
.subFlowMapping(Boolean.TRUE, sf -> sf.handle(serviceRef, "handleInvalidFile"))
.subFlowMapping(Boolean.FALSE, sf -> sf
.handle(serviceRef, "handleValidFile")
.handle(anotherServiceRef)))
.filter(additionalFilterRef)
.handle(Files.outboundAdapter("'output/dir/path'")
.autoCreateDirectory(true)
.deleteSourceFiles(true),
c -> c.advice(fileCopyAdvice()))
.get();
}
我正在使用这篇文章来实现上面的代码 - https://spring.io/blog/2014/11/25/spring-integration-java-dsl-line-by-line-tutorial。但是,我无法找到有关该代码测试的信息。
我对上面的代码有几个问题:
jmsInputChannel.send(testMessage);
谢谢。
答案 0 :(得分:2)
嗯,Alex,
既然你找不到任何样本,也没有任何文章或其他内容,那就意味着没有那样的东西。
仅仅因为Spring Integration没有固定的测试工具。
我们仍然试图提出一些建议并鼓励社区分享他们对此事的看法:https://github.com/spring-projects/spring-integration-java-dsl/issues/23。
正如你所看到的那样没有那么多进展。
现在让我试着回答你的其他问题。
我们使用真正的嵌入式ActiveMQ进行测试。它只是通过ConnectionFactory
自动启动代理并正确填充所有目的地。虽然您可以在Stub*
测试中找到一些spring-integration-jms
类:https://github.com/spring-projects/spring-integration/tree/master/spring-integration-jms/src/test/java/org/springframework/integration/jms
您也可以获得对这些隐式渠道的引用:https://github.com/spring-projects/spring-integration-java-dsl/wiki/Spring-Integration-Java-DSL-Reference#message-channels:
默认情况下,端点通过
DirectChannel
连接,其中bean名称基于模式:[IntegrationFlow.beanName].channel#[channelNameIndex]
。
因此,在您的情况下,Jms.messageDrivenChannelAdapter()
之后和transform()
之前的频道的bean名称为fileProcessingFlow.channel#0
。
您对MessageHistory
的担忧不确定。您只需在测试工具中再添加一个@Configuration
类,即可声明@EnableMessageHistory
。