我打算测试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
和enrichHeaders
潜水来测试它。从Spring Integration
文档中,执行此操作的方法是拆分流并将消息写入通道,并在后续流中从通道读取。
我的问题是,当我将其拆分为QueueChannel
或DirectChannel
时,我是否会更改默认效果?因为现在有一个额外的层要将数据发送到该层,如果在将数据传递到不同的流时使用错误类型的通道,这会减慢速度吗?
答案 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