0

我打算测试一个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我想测试的样本。现在,我想通过在每个transform's 和enrichHeaders. 从Spring Integration文档来看,这样做的方法是拆分流并将消息写入通道并在后续流中从通道读取。

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

4

1 回答 1

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

于 2018-02-27T22:21:43.050 回答