Spring 流的集成测试(Java DSL配置)
我正在尝试为流配置实现一些测试。我将JMS入站通道适配器作为流的入口点,将出站文件通道适配器(附带ExpressionEvaluationRequestHandlerAdvice)作为最后一个端点 下面是一个示例代码:Spring 流的集成测试(Java DSL配置),spring,spring-integration,Spring,Spring Integration,我正在尝试为流配置实现一些测试。我将JMS入站通道适配器作为流的入口点,将出站文件通道适配器(附带ExpressionEvaluationRequestHandlerAdvice)作为最后一个端点 下面是一个示例代码: @Bean public IntegrationFlow fileProcessingFlow() { DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer(); dm
@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();
}
@Bean
公共集成流文件处理流(){
DefaultMessageListenerContainer dmlc=新的DefaultMessageListenerContainer();
dmlc.setConnectionFactory(连接工厂);
dmlc.setDestination(jmsQueue);
返回IntegrationFlows.from(Jms.messageDrivenChannelAdapter(dmlc))
.transform(p->新文件(p))
.handle(headerRicherService)
.route(“T(SomeEnum).INVALID.equals(headers['headerName'])”,映射->映射
.subFlowMapping(Boolean.TRUE,sf->sf.handle(serviceRef,“handleInvalidFile”))
.子流映射(Boolean.FALSE,sf->sf
.handle(serviceRef,“handleValidFile”)
.handle(另一个serviceref)))
.filter(附加FilterRef)
.handle(Files.outboundAdapter(“'output/dir/path'))
.autoCreateDirectory(true)
.deleteSourceFiles(true),
c->c.advice(fileCopyAdvice())
.get();
}
我用这篇文章来实现上面的代码-。然而,我无法找到有关测试该代码的信息
关于上述代码,我有几个问题:
jmsInputChannel.send(testMessage)代码>
ConnectionFactory
自动启动代理,并正确填充所有目的地。尽管您可以在spring集成jms
测试中找到一些Stub*
类:
您还可以获取对这些隐式通道的引用:
默认情况下,端点通过DirectChannel
连接,其中bean名称基于以下模式:[IntegrationFlow.beanName].channel#[channelNameIndex]
因此,在您的例子中,Jms.messageDrivenChannelAdapter()之后和transform()之前的通道有一个bean名称,如fileProcessingFlow.channel\0
不确定您对消息历史记录的担忧。您只需将一个以上的@Configuration
类添加到您的测试线束中,就可以在其中声明@EnableMessageHistory
Hi Artem。非常感谢您的详细回复。