拆分IntegrationFlow进行测试

时间:2018-02-27 21:41:02

标签: spring-integration spring-integration-dsl

我打算测试IntegrationFlow并提出问题?

让我带你走过我打算做的事。

IntegrationFlows
        .from(Amqp.inboundAdapter(connectionFactory, queue)
            .acknowledgeMode(AcknowledgeMode.AUTO)
            .concurrentConsumers(10).prefetchCount(100))
        .<byte[], String>transform(String::new)     
        .transform(objectMapperProcessor::process) 
        .enrichHeaders(header)                           
        .handle(Amqp.outboundAdapter(amqpTemplate)                                
            .routingKeyExpression("headers.routingKey_delta"))
        .get();

这是我想测试的样本IntegrationFlow。现在,我想通过在每个transformenrichHeaders潜水来测试它。从Spring Integration文档中,执行此操作的方法是拆分流并将消息写入通道,并在后续流中从通道读取。

我的问题是,当我将其拆分为QueueChannelDirectChannel时,我是否会更改默认效果?因为现在有一个额外的层要将数据发送到该层,如果在将数据传递到不同的流时使用错误类型的通道,这会减慢速度吗?

1 个答案:

答案 0 :(得分:1)

嗯,实际上没有任何性能影响。默认情况下,端点之间存在通道。他们甚至是bean,你已经可以访问它们并进行交互了。你甚至可能不需要任何额外的通道和这种分流。

另一方面,IntegrationFlow只是一个逻辑容器,当你通过某种逻辑原因将其中一个分成几个时,再没有任何性能影响。仅仅因为目标的努力工作是由端点完成的,而不是流程。

您可能会发现此信息非常有用:https://docs.spring.io/spring-integration/docs/5.0.2.RELEASE/reference/html/java-dsl.html#java-dsl-channels

还要注意Spring Integration中的测试框架:https://docs.spring.io/spring-integration/docs/5.0.2.RELEASE/reference/html/testing.html#test-context